如何检查表是否包含具有不同值的多个条目

时间:2018-06-05 06:00:59

标签: php database laravel eloquent

我有一个产品列表和一个网站列表。每个网站上都有很多产品,每个产品都可以在很多网站上。

我想在特定网站上找到不在另一个网站上的每个产品,基本上是该网站所独有的。

我能想到的唯一解决方案是遍历每个产品,然后遍历每个网站以检查它们是否具有正确的URL。

这有效,但我觉得有更好的方法来实现这一目标。有没有人有任何想法?

2 个答案:

答案 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();

Eloquent - has() method

Constraining Eager Loads