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