Laravel-语法错误或访问冲突:1066不是唯一的表/别名

时间:2018-06-28 19:42:38

标签: php laravel many-to-many relationship

我有一个用户模型

class User
{
    protected $primaryKey = 'user_id';

    public function blocks()
    {
        return $this->belongsToMany(Block::class, 'block_user', 'blocker_id', 'blocked_id')->withTimestamps();
    }
}

还有一个积木模型

class Block extends Model
{
    protected $table = "block_user";
}

所以我有两个表:一个用于用户信息,另一个用于当一个用户阻塞另一个数据透视表时(枢轴表),因此users表中的user_id既是本地的又是外部的。

问题是,如果我想获取某个用户是否阻止了另一个用户,则会返回错误消息:Syntax error or access violation: 1066 Not unique table/alias: 'block_user'

$user = User::where('user_id', 1)->first();
dd($user->blocks->first_name);

我该如何解决?谢谢

1 个答案:

答案 0 :(得分:0)

您将用户模型与用户模型而不是模块模型相关联。数据透视表的模型不是必需的,通常永远不会使用。

public function blocks()
{
    return $this->belongsToMany(User::class, 'block_user', 'blocker_id', 'blocked_id')->withTimestamps();
}

因此,与其关联到Block::class中的User::class