我有一个产品列表和一个网站列表。每个网站上都有很多产品,每个产品都可以在很多网站上。
我想在特定网站上找到不在另一个网站上的每个产品,基本上是该网站所独有的。
我能想到的唯一解决方案是遍历每个产品,然后遍历每个网站以检查它们是否具有正确的URL。
这有效,但我觉得有更好的方法来实现这一目标。有没有人有任何想法?
答案 0 :(得分:0)
如果你使用Eloquent关系,你可以像这样解决你的问题:
$posts = App\Product::has('websites', '=', 1)->get();
请参阅:https://laravel.com/docs/5.6/eloquent-relationships#querying-relationship-existence
答案 1 :(得分:0)
如果您想通过网站急切加载网站独有的产品,您可以执行以下操作:
Website::with(['products' => function ($query) {
$query->has('websites', 1);
}])->find($id);
否则,如果您已加载$website
,则可以执行以下操作:
$uniqueProducts = $website->products()->has('websites', 1)->get();