2015-08-27 6 views
1

У меня есть три модели Eloqent, которые я хотел бы относить друг к другу (категория, подкатегория и стиль) в стиле «один ко многим». Отношение hasMany работает правильно, но инверсия (принадлежит TO) не является.Eloquent hasMany Inversion

Модели Paragon \ Products \ Category, Paragon \ Products \ Subcategory и Paragon \ Products \ Style. Таблицы выглядеть следующим образом:

Категория Paragon \ Products \ Категория

ID ... 
1 
2 

Подкатегория Paragon \ Products \ Подкатегория

ID Category ... 
1 2 
2 2 

Стиль Paragon \ Products \ Style

ID Subcategory ... 
1 1 
2 1 

Взаимосвязи выглядеть следующим образом:

Категория Paragon \ Products \ Категория

public function subcategories() { 
    return $this->hasMany('Paragon\Products\Subcategory', 'category'); 
} 

Подкатегория Paragon \ Products \ Подкатегория

public function styles() { 
    return $this->hasMany('Paragon\Products\Style', 'subcategory'); 
} 

public function category() { 
    return $this->belongsTo('Paragon\Products\Category', 'category'); 
} 

Стиль Paragon \ Products \ Стиль

public function subcategory() { 
    return $this->belongsTo('Paragon\Products\Subcategory', 'id', 'subcategory'); 
} 

В идеале, я хочу, чтобы иметь возможность называть $ subcategory-> category(); и возвратите экземпляр Paragon \ Products \ Category. В тот момент, когда я это делаю, я возвращаю экземпляр Builder. Я предполагаю, что у меня отсутствует какой-то метод извлечения из моих отношений ...

Любая помощь приветствуется, спасибо!

+0

Кроме того, я хотел бы иметь возможность получить имя Subcategory и категории (как называется «имя») с помощью экземпляра модели Style. Это возможно? –

ответ

0

Это то, что вы хотите

$subcategories = $subcategory->with('category') -> get(); 


foreach ($subcategories as $row){ 


} 
+0

Блестяще, спасибо! –

+0

Отсюда, как мне получить доступ к свойствам связанной модели? –

+0

@mikekaperys Ты wleomce. Простой цикл foreach, но это зависит от результата, который вы получаете из таблицы. хотя это другой вопрос. Задайте новый вопрос и предоставите образцы данных. – mdamia

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