0

我被 cakephp 的循环功能困住了。逻辑是我需要将用户输入的数据与表中已有的数据进行比较。我有两张桌子,一张是Bookings,一张是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 回答