Cakephp 3.6.14:查找,更新和保存记录

时间:2019-01-09 12:41:16

标签: php cakephp cakephp-3.x

我有3个表:Tasks [id, name, task_type_id]TaskTypes [id, name]TaskElements [id, name, description, task_type_id, Task_id]。我想在TasksControlleraddedit函数)中找到所有带有task_elementtask_type_id != null的{​​{1}},然后使用更新了Task_id == null字段。

这是我到目前为止尝试过的:

task_id

但是public function edit($id = null) { $task = $this->Tasks->get($id, [ 'contain' => [] ]); if ($this->request->is(['patch', 'post', 'put'])) { $task = $this->Tasks->patchEntity($task, $this->request->getData()); //if has specific task type then copy task elements if ($this->request->getData('task_type_id') != null){ $taskElements = TableRegistry::get('TaskElements')->find('all', [ 'conditions' => ['TaskElements.task_type_id == '=> $this->request->getData('task_type_id')], 'limit' => 100 ])->ToArray(); debug($taskElements); //foreach ($taskEl as $tel) { // $tel->task_id = $id; // $this->Tasks->TaskElements->create(); // $this->Tasks->TaskElements->save($tel); //} } if ($this->Tasks->save($task)) { $this->Flash->success(__('The task has been saved.')); //return $this->redirect(['action' => 'index']); } $this->Flash->error(__('The task could not be saved. Please, try again.')); } 不正确,需要更新它们。也许我的代码中还有更多错误尚未解决。

这是我得到的错误:

  

语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在第1行的'= 1 LIMIT 100'附近使用

     

选择TaskElements.id AS conditions,TaskElements.name AS TaskElements__id,TaskElements.description AS TaskElements__name,TaskElements.task_type_id AS TaskElements__description,TaskElements.Task_id AS {{ 1}} FROM task_elements TaskElements WHERE TaskElements.task_type_id ==:c0 LIMIT 100

2 个答案:

答案 0 :(得分:1)

您的SQL查询应使用“ =”代替“ ==“。

  

选择TaskElements.id AS TaskElements__id,TaskElements.name AS   TaskElements__name,TaskElements.description AS   TaskElements__description,TaskElements.task_type_id AS   TaskElements__task_type_id,TaskElements.Task_id AS   TaskElements__Task_id来自task_elements TaskElements在哪里   TaskElements.task_type_id ==:c0 LIMIT 100

您可以如下更新:

$taskElements = TableRegistry::get('TaskElements')->find('all', [
                    'conditions' => ['TaskElements.task_type_id = '=> $this->request->getData('task_type_id')],
                    'limit' => 100
                ])->ToArray();

答案 1 :(得分:0)

请勿这样使用:

TaskElements.task_type_id == '=>

像这样使用:

TaskElements.task_type_id'=>

因为=>已经意味着==,因为我们已经将其置于条件中。

如果有帮助,请右击。