RT,之前一直以為
ActiveRecord->save 方法
可以當資料不存在時
insert
,存在時
update
,後來在中文官網上看到了這段文檔:
// 建立一條記錄$model = new Customer;if ($model->load(Yii::$app->request->post()) && $model->save()) { // 擷取使用者輸入的資料,驗證並儲存}// 更新主鍵為$id的AR$model = Customer::findOne($id);if ($model === null) { throw new NotFoundHttpException;}if ($model->load(Yii::$app->request->post()) && $model->save()) { // 擷取使用者輸入的資料,驗證並儲存}
按照這個邏輯,我現在如果想更新id = 100
這條資料資訊,如果資料表中沒有這條記錄,那麼$model === null
,如此一來,還得先判斷,如果為空白,執行個體化一個 $model
,然後:
$model = new Customer();$model->id = 100;.....
感覺這樣不夠優雅,還是說我對ActiveRecord
的理解有問題?
回複內容:
RT,之前一直以為 ActiveRecord->save 方法
可以當資料不存在時 insert
,存在時update
,後來在中文官網上看到了這段文檔:
// 建立一條記錄$model = new Customer;if ($model->load(Yii::$app->request->post()) && $model->save()) { // 擷取使用者輸入的資料,驗證並儲存}// 更新主鍵為$id的AR$model = Customer::findOne($id);if ($model === null) { throw new NotFoundHttpException;}if ($model->load(Yii::$app->request->post()) && $model->save()) { // 擷取使用者輸入的資料,驗證並儲存}
按照這個邏輯,我現在如果想更新id = 100
這條資料資訊,如果資料表中沒有這條記錄,那麼$model === null
,如此一來,還得先判斷,如果為空白,執行個體化一個 $model
,然後:
$model = new Customer();$model->id = 100;.....
感覺這樣不夠優雅,還是說我對ActiveRecord
的理解有問題?
Yii中文官網答案
save
是按照表的主鍵來的,如果你傳入了主鍵就是更新,反之則是添加