以下代码创建了将Tasks
与最新Decisions
trough TasksDecisions
联接表连接起来的查询。如何在不使用普通查询的情况下执行相同的操作,但CriteriaBuilder
使用了?{/ p>
/** Root of this query object is Task
* Decision is direct child
*/
$query->matching("Decisions", function (Query $q) use ($decision) {
$q->where(["decision IN" => $decision]);
$q->where([
"Decisions.id" => $q->newExpr("SELECT MAX(td.decision_id) FROM tasks_decisions td WHERE td.task_id=Tasks.id")
]);
return $q;
});
答案 0 :(得分:0)
而不是这个
$q->where(["Decisions.id" => $q->newExpr("SELECT MAX(td.decision_id) FROM tasks_decisions td WHERE td.task_id=Tasks.id")]);
试
$q->where(["Decisions.id" => $this->TaskDecision->find()->all();
这只是一个例子,只需根据需要构建条件。
请参阅此处的手册https://book.cakephp.org/3.0/en/orm/query-builder.html#subqueries