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_tokens
(token
,updated_at
,created_at
)值(JwUIE4bPUZ19QppdfKWXYJq5HGPsKUiQubOC0NB7,2020-06-12 09:41:06,2020-06-12 09:41:06))
创建工作正常,但更新显示错误
答案 0 :(得分:0)
您可以尝试
$user->loginToken->updateOrCreate(['user_id' => $user->id],['token' => Str::random(40)]);