在下面的查询中,我试图从'posts'表中获取来自其他2个表的相关记录的记录:'polls'和'comments'。
但是查询结果会重复“发布”1次,因为“发布”属于“评论”的次数。
例如。如果我的帖子id = 15且该帖子有5条评论,那么结果我有5次帖子id = 15,但有一条不同的评论。
如何编写查询,只有1条“帖子”和“评论”部分中的所有评论?
DB::table('posts')
->join('polls', 'posts.id', '=', 'polls.post_id')
->join('comments','posts.id','=', 'comments.post_id')
->whereMonth('posts.created_at','=',date('m',strtotime("01-04-2018")))
->orderBy('polls.yes', 'desc')->get();
谢谢。
答案 0 :(得分:0)
您应该使用模型和关系:
class Post extends Model {
public function poll() {
return $this->hasOne(Poll:class);
}
}
class Poll extends Model {
public function comments() {
return $this->hasMany(Comment:class);
}
}
class Comment extends Model {}
$posts = Post::whereMonth('created_at', '=', date('m', strtotime("01-04-2018")))
->with('poll.comments')
->get()
->sortByDesc('poll.yes');