所以我是 laravel 的新手,我不知道 laravel eloquent 中保存、填充和創建之間的區別。任何人都可以描述它嗎?
uj5u.com熱心網友回復:
save()方法是當您已經為模型實體賦值時。例如
$user = new User;
$user->name = "anything";
$user->save();
dd($user); // {'id': 1, 'name': 'anything'}
save()也可以用于更新值
$user = User::first(); // { 'id': 1, 'name': "anything" }
$user->name = "change";
$user->save();
dd($user); // {id: 1, name: "change"}
create()是一個靜態函式,需要陣列引數來創建新記錄
$user = User::create(['name' => 'new user']);
dd($user); // {id: 2, name: 'new user'}
fill()與 save() 方法相同,但不創建新記錄。需要創建一個新實體才能使用 fill()
$user = new User;
$user->fill(['name' => 'last user']);
echo count(User::all()); // We count users on DB and result is 2
$user->save(); // This will save 'last user' to DB
echo count(User::all()); // result is 3
uj5u.com熱心網友回復:
有點像,但不完全一樣。
//Creating User with fill()
$user = new User();
$user->fill($validatedUserData);
$user->save();
//Creating User with create();
$user = User::create($validatedUserData);
如您所見,create 只需一行即可完成所有 3 行(帶有填充功能)。這本質上是一種生活質量特征。
上面顯示的這兩個都做同樣的事情。
話雖如此,您可能希望create()在創建新條目時使用。但是為了更新一個專案,最好只做這樣的事情:
public function update(User $user, Request $request){
$validatedUserData = $request->validate([
//Validation logic here
]);
$user->fill($validatedUserData);
$user->save();
}
注意:您需要將欄位標記為可填寫才能使用create()或使用這些欄位fill()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/468980.html
標籤:拉拉维尔
上一篇:從模型回傳帶小數的價格的最佳方法
