Yii2.0:數據庫操作增刪改查詳細介紹

最近更新時間 2020-01-13 11:11:30

Yii 2.0 中數據庫的增刪改查操作。

查詢數據

查詢一條數據

<?php
//根據主鍵查詢數據
Customer::findOne(10);

//查詢一條數據 id=10 
Customer::find()
  ->where(['id' => 10])
  ->one();

//根據主鍵多個值查詢
Customer::findOne([10, 11, 12]);

//同上
Customer::find()
  ->where(['id' => [10, 11, 12]])
  ->one();

查詢多條數據

<?php
//根據主鍵查詢
PageModel::findAll(10);

//根據主鍵查詢
PageModel::findAll([10, 11, 12]);

//按分類返回列表,結果轉換為數組
$params = array();
$params[':classify'] = 1;

$pageList = PageModel::find()
  ->select('id, title')
  ->where('classify=:classify')
  ->params($params)
  ->asArray()
  ->all();
注意:根據主鍵查詢時返回一條記錄,findOne 方法和 findAll 方法最大的區別是,findOne 返回 ActiveRecord 對象,而 findAll 返回一個數組。

插入數據

<?php
//插入數據
$pageModel = new PageModel();
$pageModel->name = $name;
$pageModel->content = $content;
$pageModel->save();
注意:保存成功後返回 boolean 值,如果數據庫是自增ID,通過 $pageModel->id 可以訪問新生成的 ID。

刪除數據

//刪除一條數據
$pageModel = PageModel::findOne(1);
$pageModel->delete();

//根據條件刪除多條數據
$params = array();
$params[':id'] = 0;
$condition = 'id=:id';
PageModel::deleteAll($condition, $params);
注意:謹慎使用 deleteAll ,如果不傳入參數會刪除整張表。返回值為刪除數據的條數。

修改數據

//修改一條數據
$pageModel = PageModel::findOne(1);
$pageModel->title = $title;
$pageModel->update = date('Y-m-d');
//指定需要更新的字段
$attributeNames = array("title", "update");
$pageModel->update(true, $attributeNames);

//批量修改數據
$attributes = array(
  'title' => $title,
  'update' => date('Y-m-d')
);
$condition = 'id=:id';
$params = array(
  ':id' => 1
);
PageModel::updateAll($attributes, $condition, $params);
注意:update 更新時最好指定需要更新的字段,不然多人修改同一記錄時容易覆蓋別人修改的內容,默認會更新所有字段。高併發時建議使用 updateAll 方法添加嚴格限制條件更新數據。
rss_feed