2015-05-18 2 views
1

У меня есть 3 таблицы. пользователя, темы и темы_user. Это потому, что мне нужно много-много отношений. Я создал в обеих моделях следующее:много-много вопросов с красноречивым при использовании сводной таблицы

// theme.php

public function users() { return $this->belongsToMany('App\User', 'theme_user', 'theme_code', 'user_id'); } 

//User.php

public function themes() { return $this->belongsToMany('App\Theme', 'theme_user', 'user_id', 'theme_code'); } 

Теперь я хочу, чтобы получить все пользователи из определенной теме. Therefor я

$themeUser = Theme::where('code', '=', $code)->first()->users; 

Но запрос я не прав ..

'select users.*, theme_user.theme_code as pivot_theme_code, theme_user.user_id as pivot_user_id from users inner join theme_user on users.id = theme_user.user_id where theme_user.theme_code is null' 

Как я могу решить эту проблему?

+0

Что случилось с запросом? – patricus

+0

Ну .. Мне нужно получить пользователей, которым назначена тема. С этим запросом я не получаю этот результат. – Reshad

+0

Все выглядит правильно. Единственное, что я могу думать об этом, - это то, что найденный 'theme_code' для найденной записи' Theme' равен null. Что вы получаете от 'dd (Theme :: where ('code', '=', $ code) -> first());'? – patricus

ответ

0

Заканчивать документация по hasManyThrough(): http://laravel.com/docs/4.2/eloquent#has-many-through

В вашем случае, это было бы что-то вроде:

class User 
{ 
    public function themes() 
    { 
     return $this->hasManyThrough('ThemeUser', 'Theme'); 
    } 
} 
+0

нет требования hasManyThrough это всего лишь случай сводной таблицы –

+0

Но тогда мне нужно создать модель ThemeUser? это модель из двух моделей. Не думайте, что это действительно лучшая практика? – Reshad

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