我正在嘗試將模型保存到我的資料庫中。但由于某種原因,它不起作用。這是我得到的錯誤:
SQLSTATE[HY000]: General error: 1364 Field 'token' doesn't have a default value (SQL: insert into `user_registration_tokens` (`updated_at`, `created_at`) values (2022-03-21 17:40:13, 2022-03-21 17:40:13))
但是當我轉儲我的模型時,我可以看到已經設定了值。但是我在錯誤資訊里面的sql查詢中找不到token和user_id。
我的模型:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
/**
* @property string $token;
*
* @property int $user_id;
*/
class UserRegistrationToken extends BaseModel
{
use HasFactory;
public string $token;
public int $user_id;
}
我如何嘗試保存模型:
$registrationToken = new UserRegistrationToken;
$registrationToken->user_id = $userId;
$registrationToken->token = '$token';
$registrationToken->save();
注意:當嘗試通過質量分配保存專案時,它可以作業。出于安全原因,我不想要這個。
uj5u.com熱心網友回復:
嘗試為 $fillable您的模型設定一個!
消除public string $token; and public int $user_id;
您也可以在您的資料庫結構中設定token和。user_id nullable
protected $fillable=['token','user_id'];
然后你可以像這樣在你的控制器中使用它(或者像你以前做過的那樣):
UserRegistrationToken::create([
'token'=>$token,
'user_id'=>$userId
]);
uj5u.com熱心網友回復:
在您的模型中,您需要說明哪些欄位是可填寫的。
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
/**
* @property string $token;
*
* @property int $user_id;
*/
class UserRegistrationToken extends BaseModel
{
use HasFactory;
protected $fillable = [
'token',
'user_id',
];
然后 :
$token = ['token'=>$token, 'user_id'=>$userId];
UserRegistrationToken::create($token);
uj5u.com熱心網友回復:
更改注釋以允許空值:
/**
* @property string|null $token;
*
* @property int $user_id;
*/
還有屬性型別:
public ?string $token;
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/446171.html
上一篇:SQLSTATE[23000]:完整性約束違規:1452無法添加或更新子行laravel9
下一篇:Laravel使用變數創建路由
