原始的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