3 回答

TA貢獻2037條經驗 獲得超6個贊
插入() :
如果您使用 insert() 方法,則不能默認 created_at 和 updated_at 數據庫列它將為空
DefaultUser::insert(['username' => $request->username, 'city' => $request->city, 'profile_image' => $request->profile_image]);
create() : 當我們使用 create 方法時,您必須在可填充字段中定義此模型
添加您的模型
protected $fillable = ['username','city', 'profile_image'];
添加你的控制器
DefaultUser::create(['username' => $request->username, 'city' => $request->city, 'profile_image' => $request->profile_image]);
然后我們可以使用創建方法而沒有**質量分配錯誤**基本上在這里,表定義的字段在您的模型中受到保護
您應該定義要使質量可分配的模型屬性。您可以使用模型上的 $fillable 屬性來執行此操作

TA貢獻1880條經驗 獲得超4個贊
該模型沒有insert
, 調用Model::insert
導致Builder::insert
通過__call()
魔術方法調用(查詢生成器),然后避免 Eloquent 的好處,如設置timestamps
forcreated_at
和updated_at
字段。
它還避免了 Eloquent 保護您免于插入意外數據的 Mass-assignment 保護。
所以我總是會create
單獨使用或設置每個字段(如果你需要修改傳入的數據)并調用save()
模型實例。

TA貢獻1851條經驗 獲得超3個贊
Insert 方法:insert 方法接受列名和值的數組。使用此方法,您可以插入數據,而無需在模型上指定可填充和受保護的屬性,此處 created_at 和 updated_at 值默認設置為 NULL 值。
User::insert(['userName'=>'manish','email'=>'[email protected]']);
Create 方法 create 方法還用于在單行中插入新模型。它的實例將從該方法返回您。在使用create()之前,需要在模型上指定可填充或受保護的屬性,默認情況下它可以防止大規模分配,并且它的 create_at 和 updated_at 的自動填充值
User::create(['userName'=>'manish','email'=>'[email protected]'])
- 3 回答
- 0 關注
- 220 瀏覽
添加回答
舉報