2014-10-27 2 views
0

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

но для вызова друзей у меня возникают проблемы получения моего отношения прямо:

user 
    id 

friends 
    user_id 
    friend_user_id 
пользователь

Класс:

public function Friends(){ 
    return $this->hasMany('App\User', 'friends'); 
} 

Так Auth::User()->Friends должен возвращать список моделей User

+0

Просьба дать более подробную информацию: - Являются ли также знакомыми класса «Пользователь» или отдельный класс «Друг»? – Adimeus

+0

Пользователь является единственным классом – Kiwi

ответ

1

Вы на самом деле не имеют «один ко многим» отношения, а «многие ко многим» с friends быть вашим присоединения таблицы

Попробуйте это:

public function Friends(){ 
    return $this->belongsToMany('App\User', 'friends', 'user_id', 'friend_user_id'); 
} 
0

При создании отношения к одной и той же модели, вы могли бы сделать что-то вроде этого:

Модели/User.cs

public function Friends() 
{ 
    return $this->hasMany('User', 'user_friend_of', 'id'); // assuming user_friend_of is the FK on user-table 
} 

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

Это будет означать, у вас есть только 1 таблицу, которая имеет внешний ключ другой ряд в той же таблице, например: (идентификатор - имя - user_friend_of)

0

В классе пользователя, определить функцию следующим образом:

public function Friends(){ 
    return $this->hasMany('friends'); 
} 

Вызов $ user-> Друзья() -> получить() должен возвращать все, что вам нужно. Обратите внимание, что «друзья» должны быть именем таблицы.

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