updateOrCreate () дает столбец не найден: 1054 Неизвестный столбец «0» в «где предложение» - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь назначить роль пользователю, когда он пытается. Но это дает мне эту ошибку. Я использую updateOrCreate(), потому что я хочу использовать этот метод позже, чтобы изменить роль пользователя

SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец '0' в 'где предложение '(SQL: выберите * из roles, где (0 = user_id и 1 = = и 2 = 10) предел 1)

Schema::create('roles', function (Blueprint $table) {
     $table->increments('id');
     $table->unsignedInteger("user_id")->index();
     $table->string("role_name");
     $table->foreign("user_id")->references("id")->on("users")->onDelete("cascade");
});

RegisterController

protected function create(array $data)
{
    $user = user::create([
        'name' => $data['name'],
        'email' => $data['email'],
        "username" => $data["username"],
        'password' => Hash::make($data['password']),
    ]);

    if ($user) {
        $model = new Role();
        $model->assignNewbieRole($user->id);
    }

    return $user;
}

Ролевая модель

public function assignNewbieRole($id)
{
    $this->updateOrCreate(["user_id","=",$id],["role_name","=","newbie"]);
}

Как мне это исправить?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Значения должны быть установлены с использованием ассоциативного массива, где имя столбца является ключом, а значение - это значение, которое вы хотите найти / вставить.

$this->updateOrCreate(
    ["user_id" => $id],
    ["role_name" => "newbie"]
);
0 голосов
/ 06 сентября 2018

Вам нужно передать связанный массив вместо отдельных значений:

$this->updateOrCreate(["user_id" => $id], ["role_name" => "newbie"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...