在CakePHP 3.4中如何使用流畅的查询构建器在匹配内创建子查询?

时间:2017-06-20 11:00:51

标签: php cakephp cakephp-3.0

以下代码创建了将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;
 });

1 个答案:

答案 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