2016-02-06 2 views
1

Недавно я использую Laravel для определения отношений «follow» между пользователями. Вот модели:Как определить отношения «следовать» в laravel 5.2

class User extends Model 
{ 
    public function follows() 
    { 
     return $this->morphMany('App\User', 'followable'); 
    } 
} 

class Follow extends Model 
{ 
    public function followable() 
    { 
     return $this->morphTo(); 
    } 
} 

и база данных для выполнения диагностики, как это:

follows: 
    - id: 
    - user_id: 
    - followable_id: 
    - followable_type: 

все выше, определяется в соответствии с примерами, которые Laravel documents предоставляет.

И теперь я могу получить модель пользователя так:

$follow = Follow:find(1); 
$user = $follow->followable; 

Но когда я пишу такой код:

$followers = $user->follows; 

я получаю ошибки:

Relationship method must return an object of type 
Illuminate\Database\Eloquent\Relations\Relation 

здесь является мой вопрос: Я определил отношение «следовать» правильно? и как я могу исправить ошибки?

Спасибо.

ответ

0

попробовать это изменение

class User extends Model 
{ 
    public function follows() 
    { 
     return $this->morphMany('App\User', 'followable'); 
    } 
} 

в к

class User extends Model 
{ 
    public function follows() 
    { 
     return $this->morphMany('App\Follow', 'followable'); 
    } 
} 

, потому что ваш дали название модели неверен.

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