Laravel - Синтаксическая ошибка или нарушение доступа: 1066 Не уникальная таблица / псевдоним - PullRequest
0 голосов
/ 28 июня 2018

У меня есть модель для пользователей

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";
}

Итак, у меня есть две таблицы: одна для информации о пользователях, а другая - когда одна блокирует другую (сводная таблица), поэтому 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 голосов
/ 28 июня 2018

Вы относите пользовательскую модель к пользовательской модели, а не к блочной модели. Модель для сводной таблицы не нужна и обычно никогда не будет использоваться.

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

Таким образом, вместо того, чтобы относиться к Block::class в вашей компании ToMany, относитесь к User::class.

...