2014-10-25 3 views
0

Я хочу, чтобы извлечь категории пользователей рискаLaravel красноречивое отношение запрос

риски таблица

id 
risk 
category_id 

risk_user таблицы

id 
risk_id 
user_id 

risk_categorys

id 
category 

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

class Risk extends Eloquent{ 

    protected $table = 'risks'; 

    public $timestamps = false; 

    public function users() 
    { 
     return $this->belongsToMany('User'); 
    } 

    public function category() 
    { 
     return $this->belongsTo('RiskCategory'); 
    } 

} 

Но я борюсь, когда дело доходит до извлечения всех категорий риски для конкретного пользователя.

ответ

1

Я хотел бы сделать это следующим образом:

Модель пользователя

class User extends Eloquent{  
    public function risks(){ 
     return $this->belongsToMany('Risk'); 
    } 
} 

Затем вы можете использовать Eager Loading, чтобы получить категорию для всех рисков.

Запрос

User::find(1)->risks()->with('category')->get(); 

Поскольку у меня нет весь ваш код, ни базы данных я не могу проверить это, но теоретически он должен работать;), если нет, то просто оставьте меня комментарий.

+0

Спасибо! Это дает мне всю категорию рисков. Однако существует ли простой способ получить категорию только один раз, поэтому категория не повторяется, если одна и та же категория используется во многих рисках? – Bullfinch

+0

@ Bullfinch Хмм, я не думаю, что у этого таланта есть что-то для этого. Однако вы можете использовать Query Builder или фильтровать его в простой петле PHP. Скажите мне, если вам нужна дополнительная помощь, и я обновлю свой ответ. – lukasgeiter

+0

Хорошо, я сделаю это php-style then :) Спасибо за ваши материалы. – Bullfinch

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