更新时在关系上执行UpdateOrCreate时不起作用

时间:2020-06-12 09:56:32

标签: laravel

User.php

 public function loginToken()
{
    return $this->hasOne('App\LoginToken');
}

SomeController.php

 protected function generateToken($user)
{
  $user->loginToken->updateOrCreate(['token' => Str::random(40)]);
}

login_tokens迁移

 public function up()
{
    Schema::create('login_tokens', function (Blueprint $table) {
        $table->id();
        $table->foreignId('user_id')->unique();
        $table->string('token');
        $table->timestamps();

        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
    });
}

错误

Illuminate \ Database \ QueryException SQLSTATE [HY000]:常规错误:1364字段'user_id'没有默认值(SQL:插入login_tokenstokenupdated_atcreated_at)值(JwUIE4bPUZ19QppdfKWXYJq5HGPsKUiQubOC0NB7,2020-06-12 09:41:06,2020-06-12 09:41:06))

创建工作正常,但更新显示错误

1 个答案:

答案 0 :(得分:0)

您可以尝试

$user->loginToken->updateOrCreate(['user_id' => $user->id],['token' => Str::random(40)]);