[英]Consult in Laravel with Many to Many relationships
我需要一个雄辩的或简单的SQL查询,它可以为我提供具有类别技术的 产品 ,而这些产品又属于ID为7的提供程序
两种情况下的关系都是多对多的,其中每个MM关系都有一个数据透视表,每个父表的ID
我希望你能帮助我。
您可以这样做:
use Illuminate\Database\Eloquent\Builder;
$products = Product
::whereHas('categories', function (Builder $query) {
$query->where('name', 'technology');
})
->whereHas('providers', function (Builder $query) {
$query->where('id', 7);
})
->get();
检查文档的此部分 。
使用带有几个连接的直接sql,这看起来更干净。 如果您需要ID以外的任何信息,也可以加入product;如果只需要ID,则仅选择pc.productId
。
select * from provider p
join product_provider pp on p.id = pp.providerid
join product_categories pc on pc.productid = pp.productid
join categories c on c.id = pc.categoriesId
where c.name = 'technology';
我个人认为这在sql中看起来更干净。 匹配pc.id
会更好然后在名称,如果您的设置允许,那么你可以放下加盟categories
。
编辑:
重新阅读问题后,似乎该ID正是您想要的ID,因此出于完整性考虑:
select pp.productId from provider p
join product_provider pp on p.id = pp.providerid
join product_categories pc on pc.productid = pp.productid
where pc.categoriesId = 7;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.