【发布时间】:2017-09-25 02:28:08
【问题描述】:
尝试根据相关数据更新一些行,使用匹配。 但只有“where”子句有效。 “匹配”被忽略!
我是不是做错了什么?
$tbTU = TableRegistry::get('TaskUsers');
$query = $tbTU->query()
->where([
'TaskUsers.service_order_id' => $so_id,
'TaskUsers.status IN' => [0, 4, 7, 9],
])
->contain(['Tasks'])
->matching('Tasks', function($q) {
return $q->where([
'Tasks.task_type IN' => [1, 4, 5]
]);
});
return $query
->update()
->set([
'status' => 3,
'user_id' => NULL,
'modified' => Time::now()
])
->execute();
谢谢!!
【问题讨论】:
-
我认为这是不可能的。无论如何,您的模型之间的关系是什么?如果
TaskUserbelongsToTask似乎你不需要匹配语句 -
是的,TaskUsers 属于 Tasks。例如,如何在不使用匹配的情况下更新状态为 4 或 7、属于 task_type 1 或 5 的任务的 TaskUser?
标签: cakephp join sql-update cakephp-3.0 query-builder