原始的SQL查詢:我怎樣才能以cakephp-3的方式寫這個查詢?
SELECT *
FROM
(SELECT p.id,
p.title,
p.mark,
(SELECT max(created)
FROM comments c
WHERE c.post_id=p.id
AND c.mark=1) AS latest_at
FROM posts p) AS Post
WHERE Post.latest_at IS NOT NULL
ORDER BY latest_at DESC LIMIT 10
我有這兩個表:
$postsTable = TableRegistry::get('Posts');
$comments = TableRegistry::get('Comments');
我已經在CakePHP中-3方式進行內部查詢:
SELECT p.id,
p.title,
p.mark,
(SELECT max(created)
FROM comments c
WHERE c.post_id=p.id AND c.mark=1) AS latest_at
FROM posts p
CakePHP的-3方式的內sql與cakephp-3 querybuilder(下面的查詢是否正確?):
$subquery = $comments->find();
$subquery->select([$subquery->func()->max('created')])
->from(['c'=>'comments'])
->where(['c.post_id=p.id','mark=1']);
$pquery = $postsTable->find()
->select(['p.id','p.title','p.mark','latest_at'=>$subquery])
->from(['p'=>'posts']);
我怎樣才能以cakephp-3的方式寫外部選擇查詢? (select * from(derived table))
在此先感謝。任何答案將不勝感激。
這可以幫助你http://book.cakephp.org/3.0/en/orm/query-builder.html – JayIsTooCommon