我试图通过子查询返回一篇带有点赞和踩数的文章。我可以使用原生查询来实现这一点。然而,这样做意味着我不能再访问文章模型的关系,例如评论。是否有更优雅的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::select
和->where(function($subquery) {})
。 - Alex Slipknot