2016-03-29 3 views
-1

Я использую Laravel & Красноречивый.Моделирование отношений между пользователями и Рангом модели

У меня есть две таблицы.

Пользователь

id, username, password, rankId 

Ранг

id, rankName 

Что бы отношения между обоими из них? И как я могу показать связь между этими двумя моделями с использованием Laravel Eloquent Models? Любая помощь будет высоко оценен.

Я думал об hasOne, но тогда для второй таблицы (ранга) требуется внешний ключ для таблицы users. Как я могу определить эти отношения в Laravel?

ответ

1

Если вы на модели пользователя, которая будет относится к отношению, как

public function rank() 
{ 
    return return $this->belongsTo('App\Rank', 'rankId', 'id'); 
} 

Теперь, если вы запрашиваете от модели пользователя, вы можете получить ранг информацию, как это,

$user = User::find(1); 
var_dump($user->rank->rankName); 

Теперь, если вы находитесь на ранговой модели, и вы хотите, чтобы все пользователи были в определенном рейтинге, поэтому у вас будет много таких, например, это

public function users() 
{ 
    return $this->hasMany('App\User', 'rankId', 'id'); 
} 

Теперь, если вы запрашиваете ранг, вы можете получить пользователь, таким образом

$ranks = Rank::find(1); 
foreach($ranks->users as $user){ 
var_dump($user->username); 
} 

Может быть все ясно вам сейчас

+0

Great! Благодаря! Я попробую это сейчас. –

+0

Ответ правильный. Правда, пару поправок. Я бы плюрализую отношения 'user' к' users', так как это 'hasMany'. Кроме того, ваш последний фрагмент кода не будет работать. Вы случайно повторили неправильную вещь. Вы хотите: '$ rank = Rank :: find (1); foreach ($ rank-> users as $ user) {var_dump ($ user-> имя пользователя); } '. – patricus

+1

Вы правы @ patricus.Спасибо за ваш комментарий. Я сделал это –

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