我有一个完美的查询,但我需要在ORM Laravel。 我只需要在雄辩的查询构建器中使用此查询。
SELECT * FROM product where vendor_id in (
SELECT vendor_id from vendor where is_block = 0
);
场景:有两个表。一个用于
Product
,另一个用于Vendor
。 我想从Product
表中选择产品。每个产品都属于供应商。如果供应商被阻止,则不要选择产品。 如果is_block
属性为0
,则表示vendor
不是阻止。如果is_blocked=1
则阻止供应商。我只需要选择is_block = 0的供应商的产品。
答案 0 :(得分:3)
使用whereDoesntHave()
方法:
Product::whereHas('vendor', function($q) {
$q->where('is_block', 0);
})->get();
或{{3}}方法:
Product::whereDoesntHave('vendor', function($q) {
$q->where('is_block', 1);
})->get();
确保您已在Product
模型中定义了关系:
public function vendor()
{
return $this->belongsTo(Vendor::class);
}