【发布时间】:2016-02-12 08:45:19
【问题描述】:
原始 sql 查询:
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 查询构建器(下面的查询是否正确?):
$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 方式编写外部选择查询? (从(派生表)中选择 *)
提前致谢。任何答案将不胜感激。
【问题讨论】:
标签: php sql cakephp cakephp-3.0