0

Cakephp のループ機能で困っています。ロジックは、ユーザーが入力したデータを既にテーブルにあるデータと比較する必要があるということです。2 つのテーブルがあり、1 つはBookingsで、もう 1 つは ですInventories_Bookings。以下は私のコーディングですが、うまくいきません。助けて!ありがとう

public function add2() {
    if ($this->request->is('post')) {
        foreach ($invbook as $invenbook)  
        {
            if ($this->request->data['Booking']['bookings_location'] == $invenbook['InventoriesBooking']['test'])
            {
                $this->Session->setFlash(__('The booking cannot be created'));
                $this->redirect(array('action' => 'add2'));
                debug($this->request->data['Booking']['bookings_location'] == $invenbook['InventoriesBooking']['test']);
            }
        }

        $this->Booking->create();
        $invbook = $this->Booking->InventoriesBooking->find('list',array('fields' => array('InventoriesBooking.id', 'InventoriesBooking.test')));
        $this->set(compact('invbook'));
    }
}
4

1 に答える 1

0

これにはカスタム検証関数を使用します。

モデルに独自の関数を作成することができ、ここからデータベースにアクセスしてルックアップを行うことができます。一致する場合は、true を返すことができます。

本でカスタム検証方法について読むことができます。

本の db を使用したこのようなルールの例があります。 偉大な正義のために引用.

class User extends AppModel {

    public $validate = array(
        'promotion_code' => array(
            'rule'    => array('limitDuplicates', 25),
            'message' => 'This code has been used too many times.'
        )
    );

    public function limitDuplicates($check, $limit) {
        // $check will have value: array('promotion_code' => 'some-value')
        // $limit will have value: 25
        $existing_promo_count = $this->find('count', array(
            'conditions' => $check,
            'recursive' => -1
        ));
        return $existing_promo_count < $limit;
    }
}
于 2013-07-22T09:21:18.320 に答える