我有3个表:Tasks [id, name, task_type_id]
,TaskTypes [id, name]
,TaskElements [id, name, description, task_type_id, Task_id]
。我想在TasksController
(add
和edit
函数)中找到所有带有task_element
和task_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 ASTaskElements__id
,TaskElements.description ASTaskElements__name
,TaskElements.task_type_id ASTaskElements__description
,TaskElements.Task_id AS {{ 1}} FROM task_elements TaskElements WHERE TaskElements.task_type_id ==:c0 LIMIT 100
答案 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'=>
因为=>已经意味着==,因为我们已经将其置于条件中。
如果有帮助,请右击。