Laravel Eloquent查询生成器(带JOIN)

时间:2015-11-08 13:27:30

标签: eloquent laravel-5.1

表格

VENDOR
id    name    approved

PRODUCT
id    name    price    instock    fky_prod_vendor_id

关系

VENDOR(hasMany products()) <- (one-to-many) -> (hasOne vendor())PRODUCT

查询

如果在模型中定义关系,我怎样才能使用Eloquent获取批准的供应商的所有产品库存?

我的SQL如下,但我需要使用Eloquent关系来实现以下目标。

select product.id
from   product, vendor
where  product.fky_prod_vendor_id = vendor.id
and    vendor.approved = 'y'
and    product.instock  > 0

由于

ķ

1 个答案:

答案 0 :(得分:0)

由于存在关系,我们可以使用查询关系存在方法来实现这一点,其中正如@svrnm正确指出

PRODUCT::where('instock','>',0)
->whereHas('vendor', function ($query) { // Using Eloquent Query Existence, first parameter is name of relationship method, inside function is where clause on related model
            $query->where('approved','y');
        })->get();

这是Laravel的神奇之处

由于

ķ