2017-06-20 46 views
0

以下代碼創建連接Tasks與最新DecisionsTasksDecisions連接表的查詢。我怎樣才能做到這一點,而不使用普通的查詢,但CriteriaBuilder交互面?在CakePHP 3.4中如何使用流利的查詢生成器在匹配內部創建子查詢?

/** 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

取而代之的是

$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

相關問題