繁体   English   中英

在Laravel中与多对多关系进行咨询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM