php 我能把两个雄辩的where查询合并成一个查询吗?

2cmtqfgy  于 2023-01-08  发布在  PHP
关注(0)|答案(1)|浏览(121)

我有2个查询,几乎类似于$other_document和$author_document,是否可以将这2个查询合并为一个查询?

$document = Document::findOrFail($id);
$other_document = Document::forExplore()->latest()->paginate(4);
$author_document = Document::where('user_id', $document->user_id)->forExplore()->latest()->paginate(4);

return view('document.show', compact('document','other_document','author_document'));

现在,我只能把它们分成两个变量,然后把两个变量合并成一个变量。我想要的是两个查询可以简化成一个查询,然后赋值给一个变量。

fnvucqvd

fnvucqvd1#

可以使用union方法将这两个查询组合成一个查询。

$documents = Document::forExplore()
                 ->latest()
                 ->where('user_id', $document->user_id)
                 ->union(Document::forExplore()->latest())
                 ->paginate(4);
return view('document.show', compact('document', 'documents'));

注:只有Laravel 8.0或更高版本才支持联合方法。如果您使用的是早期版本的Laravel,则可以使用DB::table方法执行两个查询的联合。

相关问题