Cakephp:在保存之前检查数据是不是存在

Posted

技术标签:

【中文标题】Cakephp:在保存之前检查数据是不是存在【英文标题】:Cakephp: check if data exist before savingCakephp:在保存之前检查数据是否存在 【发布时间】:2015-11-12 06:21:38 【问题描述】:

我目前正在开发我的 cakephp 应用程序,我有一个名为 time 的数据库,它有两个表:users and accounts

users 表包含 EmployeeId 和 Password 数据字段 accounts 表还有 EmployeeId 、 Password 等。

现在,我想要发生的是每次我向用户表添加数据时,它会检查要保存的数据是否已经存在于帐户表中,如果不存在,它将闪烁错误,否则它将保存。

我如何在 cakephp 中做到这一点?这是代码:

add.ctp

public function add()
    
        $user = $this->Users->newEntity();
        if ($this->request->is('post')) 
            $user = $this->Users->patchEntity($user, $this->request->data);
            if ($this->Users->save($user)) 
                $this->Flash->success(__('Logs has been saved.'));
                return $this->redirect(['action' => 'index']);
             else 
                $this->Flash->error(__('The logs could not be saved. Please, try again.'));
            
        
        $this->set(compact('user'));
        $this->set('_serialize', ['user']);
    

【问题讨论】:

使用唯一字段book.cakephp.org/3.0/en/core-libraries/… 如果我使用唯一字段,那怎么可能账户表 j 中也存在密码 不介意您的评论不清楚您到底想要什么?如果您想创建所有字段唯一,请执行此操作,请阅读文档。 检查链接以获得更好的解释i66.tinypic.com/rc58hh.png 添加您的 add.ctp 的employid 字段。是 cakephp 2 还是 3 版本? 【参考方案1】:

你可以这样解决

在您的添加方法中,您可以使用您的请求数据检查您的Employid

例如

if ($this->request->is('post')) 

            $employid = $this->request->data('employid');   //make sure your field name 

            $this->loadModel('Your Employ model');  // add your employ model 
            $check = $this->Employ->find('count')
                                  ->where(['Employ.employid' =>$employid ]);
            if($check!=0)
            $user = $this->Users->patchEntity($user, $this->request->data);
            if ($this->Users->save($user)) 
                $this->Flash->success(__('Logs has been saved.'));
                return $this->redirect(['action' => 'index']);
                else 
                  $this->Flash->error(__('The logs could not be saved. Please, try again.'));
                
             
           else 
           
               echo "error message if not found";
           


我想你明白了。

【讨论】:

以上是关于Cakephp:在保存之前检查数据是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

如何在保存在 Mongoose 之前检查数据库中是不是存在嵌入式文档

Cakephp 检查模型是不是存在

PHP在更新SQL表之前检查文件是不是存在

休眠,检查对象是不是存在和空值

在插入表之前检查数据是不是存在

如何在模型中保存 cakephp 对象