我在数据库中有三个表(即Post,Comment,Like)。我想用评论和喜欢来获取这些帖子。但只有那些用户评论或喜欢的帖子。如果用户没有评论或喜欢,则不应提取帖子。我知道如何在单独的关系上获取具有条件的数据。但我无法理解如何在关系中用OR来表达条件。如果有人知道答案,我们将不胜感激。
这是关于个人关系的条件的代码。
$this->posts = Post::with(['comments', 'votes']);
if($field == 'comments') {
$this->posts->whereHas('comments', function($query)
{
$query->where('in_user_id', Auth::user()->in_user_id);
});
} else if ($field == 'votes') {
$this->posts->whereHas('votes', function($query)
{
$query->where('in_user_id', Auth::user()->in_user_id);
});
} else if($field == 'both') {
// Here I want help
}
答案 0 :(得分:0)
好的,这是我错误的焦点。我只关注$query->where()
。但这很简单。我只需将whereHas()
更改为orWhereHas()
即可获得投票。
这是更新(解决方案)代码。
$this->posts = Post::with(['comments', 'votes']);
if($field == 'comments') {
$this->posts->whereHas('comments', function($query)
{
$query->where('in_user_id', Auth::user()->in_user_id);
});
} else if ($field == 'votes') {
$this->posts->whereHas('votes', function($query)
{
$query->where('in_user_id', Auth::user()->in_user_id);
});
} else if($field == 'both') {
$this->posts->whereHas('comments', function($query)
{
$query->where('in_user_id', Auth::user()->in_user_id);
});
$this->posts->orWhereHas('votes', function($query)
{
$query->where('in_user_id', Auth::user()->in_user_id);
});
}