Illuminate \ Database \ QueryException (42000) SQLSTATE[42000]: 语法错误或访问冲突

Illuminate \ Database \ QueryException (42000) SQLSTATE[42000]: Syntax error or access violation

尝试在 FriendController 上执行以下查询

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

这就是 User 模型上的 friends 函数

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

但是在到达路线时我收到以下错误

Illuminate \ Database \ QueryException (42000) SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'friends' (SQL: select friends.*, friends.user_id as pivot_user_id, friends.friend_id as pivot_friend_id from friends inner join friends on friends.id = friends.friend_id where friends.user_id = 2)

Pivot tables 应该几乎没有模型。如果您尝试将 friends 用作两个用户的枢轴 table,则该关系应引用 App\User,而不是 App\Friend(或表示当前 class).

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

您想要 return 一组用户,而不是 "friends",因为朋友不是实体,而是一种关系。