2015-11-08 7 views
0

ТаблицыLaravel Eloquent Query Builder (с JOIN)

VENDOR 
id name approved 

PRODUCT 
id name price instock fky_prod_vendor_id 

Отношения

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

Запрос

Как я могу получить все продукты в наличии на складе от одобрил поставщика с использованием Eloquent, учитывая, что отношения определены в модели?

Мой SQL выглядит следующим образом, но мне нужно использовать отношения «Доброе», чтобы достичь следующего.

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

Благодаря

K

+1

Все, что вам нужно, чтобы построить этот запрос описан в документации Laravel: http://laravel.com/docs/5.1/queries (о Где Морозы) и http://laravel.com/docs /5.1/eloquent -relationships (о возникновении взаимопонимания – svrnm

ответ

0

Как отношения присутствуют, мы можем достичь этого, используя Запросы отношений метод существования whereHas как справедливо указывал @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

Thanks

K

Смежные вопросы