2016-02-03 2 views
0

У меня есть четыре таблицы, я использовал Laravel 5.2 красноречивого методLaravel 5 красноречивая связь между таблицами 4

Municipalities 
id 
name 
--------------- 
Barangays 
id 
name 
municipality_id 
---------------- 
Puroks 
id 
name 
barangay_id 
---------------- 
Households 
id 
name 
purok_id 

Я приложил также hasMany(), belongsTo() отношения, соответственно, в каждой модели.

Так что:

Municipalities hasMany() Barangays hasMany() Puroks hasMany() Households 

и

Households belongsTo() Puroks belongsTo() Barangays belongsTo() Municipalities 

Я хочу знать, есть ли способ, чтобы получить имя муниципалитета через бытовой запрос?

как

query = Household->purok->barangay->municipality->name 

И у меня будет мало запрос, чтобы получить имя домашнего хозяйства, purok, барангая и муниципалитета в одном запросе.

Обычно я делаю это вручную с помощью этих таблиц.

+0

try aager loading i.e Домашнее хозяйство: с ('purok') -> с ('barangays') -> с ('Муниципалитеты') -> найти (1); – Junaid

+0

или вложенная версия Домашнее хозяйство :: с ('purok.barangays.municipalities') -> find (1) – Junaid

ответ

0

Да вы можете получить его путем включения соединений в запросе, как:

// $data will have all the columns of Households joined with Municipalities.. 
    $data = \DB::table('Households') 
        ->select('Households.*', 'Municipalities.*') 
        ->join('Puroks', 'Households.purok_id', '=', 'Puroks.id') 
        ->join('Barangays', 'Puroks.barangay_id', '=', 'Barangays.id') 
        ->join('Municipalities', 'Barangays.municipality_id', '=', 'Municipalities.id') 
        ->get(); 

Надеется, что это помогает. Приветствия.

+0

@never Вы можете даже выбрать другие таблицы в этом запросе, добавив эти таблицы внутри select(). –

+0

Да, я делаю это, я обычно делаю leftjoin(). Я хочу знать, есть ли ярлыки при этом, используя красноречие отношения Laravel. – Ikong

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