updateorcreate()提供找不到的列:“where子句”中的1054未知列“0”

watbbzwu  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(300)

我正在尝试将角色分配给用户。但它给了我这个错误。我在用 updateOrCreate() 因为我想稍后使用该方法来更改用户角色
sqlstate[42s22]:找不到列:“where子句”中的1054未知列“0”(sql:select*from) roles 在哪里( 0 =用户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");
});

寄存器控制器

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

我该怎么解决这个问题?

mbzjlibv

mbzjlibv1#

必须使用关联数组设置值,其中列名是键,值是要查找/插入的值。

$this->updateOrCreate(
    ["user_id" => $id],
    ["role_name" => "newbie"]
);
bt1cpqcv

bt1cpqcv2#

您需要传递关联数组而不是单个值:

$this->updateOrCreate(["user_id" => $id], ["role_name" => "newbie"]);

相关问题