Yii2.0:数据库操作增删改查详细介绍

Lasted 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 方法添加严格限制条件更新数据。