照亮\数据库\ QueryException(42000)SQLSTATE [42000]:语法错误或访问冲突

时间:2018-07-16 13:42:52

标签: laravel laravel-5 eloquent mysql-error-1064

试图在FriendController上执行以下查询

$friends = Auth::User()->friends;

这是用户模型上的好友功能

public function friends()
{
    return $this->belongsToMany('App\Friend', 'friends', 'user_id', 'friend_id');
}

但是在到达路线时出现以下错误

  

Illuminate \ Database \ QueryException(42000)   SQLSTATE [42000]:语法错误或访问冲突:1066不是唯一的表/别名:'friends'(SQL:选择friends作为friends user_idpivot_user_idfriendsfriend_id作为{{1}的pivot_friend_id内部联接friends内部friends的{​​{1}}。friends = idfriends,其中friend_idfriends = 2)

1 个答案:

答案 0 :(得分:0)

数据透视表几乎永远不会有模型。如果您尝试将friends用作两个用户的数据透视表,则该关系应引用App\User,而不是App\Friend(或代表当前类的静态)。

public function friends()
{
    return $this->belongsToMany(static::class, 'friends', 'user_id', 'friend_id');
}

由于朋友不是实体,而是关系,您希望返回用户集合,而不是“朋友”。