我正在与一个Eloquent查询挣扎。我的最终目标是列出由任何人创作的所有公开帖子,以及由特定用户从给定出版物创作的私人帖子。
标题:标题1 | user_id: 1 | is_private: true
标题:标题2 | user_id: 2 | is_private: false
标题:标题3 | user_id: 3 | is_private: true
标题1和标题2
我最好的拍摄是以下内容:
$posts = Post::where('publication_id', $publicationId)
->where('is_private', false)
->where(function ($query) {
$query->where('owner_id', auth()->id())
->where('is_private', true);
});
我所知道的远远不够。
答案 0 :(得分:1)
如果第二个where语句更改为orWhere
$posts = Post::where('publication_id', $publicationId)
->where('is_private', false)
->orWhere(function ($query) {
$query->where('owner_id', auth()->id)
->where('is_private', 'true');
});
原因是第一个限制第二个只搜索公共帖子以检查私人帖子的地方。这不会产生预期的结果。
一切顺利。
答案 1 :(得分:0)
试试这个
$posts = Post::where('publication_id', $publicationId)
->where(function ($query) {
$query->where('is_private', false)
->orWhere('owner_id', auth()->id());
});
答案 2 :(得分:0)
你应该试试这个:
$posts = Post::where('publication_id', $publicationId)
->where('is_private', false)
->orWhere('owner_id', auth()->id())
->get();