2016-05-18 2 views

ответ

2

First link

Second link

Query Builder

DB::table("country") 
->join('city', 'city.country_code', '=', 'country.user_id') 
->join('address', 'address.city_id', '=', 'city.id') 
->select('country.name as country') 
->where('address.id', 1) 
->get(); 

Eloquent

Country::with(['city','address' => function($query){ 
    return $query->where('id', 1) 
}]) 
->select('country.name as country') 
->get(); 
+0

Спасибо за помощь !! ur Query Builder, но Eloquent way показывает Звонок на неопределенный метод Illuminate \ Database \ Query \ Builder :: city() –

+0

@WahidNahiyan 'city' и' address' являются отношениями в модели страны, и оба должны быть объявлены , –

+0

yes u are right .. в большом проекте иногда трудно управлять Модели вместе с другими моделями, так как многие разработчики работают, а некоторые - меньше опыта, а некоторые - больше. Я думаю, что подход Query Builder довольно прост и понятен где у Eloquent есть свои методы и декларации о модели. Каково ваше мнение? Еще раз спасибо за помощь! –

2

Я модифицирую ответ от Andrey Lutscevich красноречивой части

Country::select('country.name as country')->has('city') 
    ->whereHas('address', function ($query) 
    { 
    $query->where('id', 1); 
    }) 
    ->get(); 

Запросы Отношение Существование При обращении к записи для модели, вы можете ограничить результаты на основе наличие использования отношений has в этом случае

WhereHas methods put "where" conditions on your has queries

+0

Спасибо за помощь, но он показывает Звонок на неопределенный метод Illuminate \ Database \ Query \ Builder :: city() –

+0

@WahidNahiyan вам нужно создать отношения в своей модели –

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