【发布时间】:2017-10-01 02:37:04
【问题描述】:
我正在尝试返回带有子查询的单个帖子,以包含反对票和赞成票的计数。我可以通过使用原始查询来实现这一点。
但是这样做意味着我无法再访问帖子模型关系,例如厘米。
是否有更多的 Eloquent 方式可以让我保持模型关系?
或者有没有更好的方法来处理整个事情?很想听听你会怎么做。
$post = DB::select(
"SELECT post.*,
(SELECT COUNT(*) FROM posts_votes
WHERE type = 1
AND post_id = posts.id)
AS up_votes,
(SELECT COUNT(*) FROM posts_votes
WHERE type = 2
AND post_id = posts.id)
AS down_votes
FROM posts
INNER JOIN posts_votes ON posts.id = posts_votes.post_id
WHERE posts.id = ?", [$id])[0];
【问题讨论】:
-
使用
Posts::setect和->where(function($subquery) {}) -
您可以将 raw 与 Eloquent 模型一起使用,例如 post::raw("sql query")->with("relation")
标签: php mysql laravel eloquent