新增,更新,刪除

2018-02-24 15:52 更新

要從模型新增一條數(shù)據(jù)到數(shù)據(jù)庫,只要建立一個模型實例并調用 save 方法即可。

儲存新的模型數(shù)據(jù)

$user = new User;
$user->name = 'John';
$user->save();

注意: 通常 Eloquent 模型主鍵值會自動遞增。但是您若想自定義主鍵,將 incrementing 屬性設成 false 。

也可以使用 create 方法存入新的模型數(shù)據(jù),新增完后會返回新增的模型實例。但是在新增前,需要先在模型類里設定好 fillableguarded 屬性,因為 Eloquent 默認會防止批量賦值。

在新模型數(shù)據(jù)被儲存或新增后,若模型有自動遞增主鍵,可以從對象取得 id 屬性值:

$insertedId = $user->id;

在模型里設定 Guarded 屬性

class User extends Model {
    protected $guarded = ['id', 'account_id'];
}

使用模型的 Create 方法

// 在數(shù)據(jù)庫中建立一個新的用戶...
$user = User::create(['name' => 'John']);
// 以屬性找用戶,若沒有則新增并取得新的實例...
$user = User::firstOrCreate(['name' => 'John']);
// 以屬性找用戶,若沒有則建立新的實例...
$user = User::firstOrNew(['name' => 'John']);

更新取出的模型

要更新模型,可以取出它,更改屬性值,然后使用 save 方法:

$user = User::find(1);
$user->email = 'john@foo.com';
$user->save();

儲存模型和關聯(lián)數(shù)據(jù)

有時您可能不只想要儲存模型本身,也想要儲存關聯(lián)的數(shù)據(jù)。您可以使用 push 方法達到目的:

$user->push();

您可以結合查詢語句,批次更新模型:

$affectedRows = User::where('votes', '>', 100)->update(['status' => 2]);

注意: 若使用 Eloquent 查詢構造器批次更新模型,則不會觸發(fā)模型事件。

刪除模型

要刪除模型,只要使用實例調用 delete 方法:

$user = User::find(1);
$user->delete();

按主鍵值刪除模型

User::destroy(1);
User::destroy([1, 2, 3]);
User::destroy(1, 2, 3);

當然,您也可以結合查詢語句批次刪除模型:

$affectedRows = User::where('votes', '>', 100)->delete();

只更新模型的時間戳

如果您只想要更新模型的時間戳,您可以使用 touch 方法:

$user->touch();
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號