亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 模型函數“創建”和“插入”有什么區別?

Laravel 模型函數“創建”和“插入”有什么區別?

PHP
慕沐林林 2022-01-24 13:14:50
Laravel 模型允許兩個函數將值插入數據庫表。他們是創建: User::create(['id'=>1,'name'=>'stack']);插入: User::insert(['id'=>2,'name'=>'overflow']);我發現他們執行類似的操作。他們之間有什么區別?
查看完整描述

3 回答

?
阿晨1998

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 屬性來執行此操作


查看完整回答
反對 回復 2022-01-24
?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

該模型沒有insert, 調用Model::insert導致Builder::insert通過__call()魔術方法調用(查詢生成器),然后避免 Eloquent 的好處,如設置timestampsforcreated_atupdated_at字段。

它還避免了 Eloquent 保護您免于插入意外數據的 Mass-assignment 保護。

所以我總是會create單獨使用或設置每個字段(如果你需要修改傳入的數據)并調用save()模型實例。


查看完整回答
反對 回復 2022-01-24
?
皈依舞

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]'])


查看完整回答
反對 回復 2022-01-24
  • 3 回答
  • 0 關注
  • 220 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號