pat*_*kot 5 php mysql laravel 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];
Run Code Online (Sandbox Code Playgroud)
尝试这个
Post::select('*')
->addSelect(DB::raw('
(select count(*)
from posts_votes
where type = 1
and post_id = posts.id)
as up_votes
'))
->addSelect(DB::raw('
(select count(*)
from posts_votes
where type = 2
and post_id = posts.id)
as down_votes
'))
->whereIn('id', $ids)
->get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8060 次 |
| 最近记录: |