У меня есть 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
и 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.'));
}
Но conditions
не верны и их нужно обновлять. И, возможно, в моем коде больше ошибок, с которыми я еще не сталкивался.
Это ошибка, которую я получаю:
Синтаксическая ошибка или нарушение прав доступа: 1064 В вашем синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MariaDB, для правильного синтаксиса для использования рядом с '= 1 LIMIT 100' в строке 1
ВЫБРАТЬ 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
FROM task_elements TaskElements WHERE Тип_экземпляров_экземпляров_экземпляров_экземпляров TaskElements_tas ==: c0 LIMIT 100