ActiveRecord(活动记录)提供了面向对象接口,用以访问数据库中的数据。一个AR类关联一张数据表,通过操作实例化的AR类模型达到处理数据的目的。
1、创建数据模型,声明AR类:
在类中引用AR基类,实现tblName方法,绑定与之关联的数据表:
~~~
namespace app\models;
use yii\db\ActiveRecord;
class User extends ActiveRecord{
public static function tableName()
{
return 'tbl_user';
}
}
~~~
注:如果应用中配置了多个数据库连接,且需给AR类使用不同的数据库连接(DB connection),可以重写覆盖yii\db\ActiveRecord::getDb()方法:
~~~
public static function getDb()
{
return \Yii::$app->dbN; //可设置名为dbN的应用组件
}
~~~
2、查询数据
AR 提供了两种方法来构建 DB 查询并向 AR 实例里填充数据:
~~~
yii\db\ActiveRecord::find()
yii\db\ActiveRecord::findBySql()
~~~
以上两个方法都会返回 yii\db\ActiveQuery 实例,该类继承自yii\db\Query。
~~~
$user1 = User::findOne($condition)/findAll($condition);//用来返回一个/所有ActiveRecord实例
$user2 = User::findBySql($sql)
$user3 = User::find()
->where() // 添加查询条件
->one()/all() // 返回一条/所有数据
->count() // 返回记录的数量
->indexBy() // 根据索引的列的名称查询结果
->orderBy() // 添加排序规则
->select() // 挑选字段
->with() // 该查询应执行的关系列表
->asArray() //以数组形式获取数据
->batch(int $n) //一次提取n条数据
->each(int $n) //一次提取n条数据并逐一遍历
->sum() //返回指定列的总数
->average() //返回指定列的平均值
->min() //返回指定列的最小值
->max() //返回指定列的最大值
->scalar() //返回查询结果的第一行中的第一列的值
->column() //返回查询结果中的第一列的值
->exists() //返回一个值,该值指示查询结果是否有数据
~~~
3、操作数据
~~~
yii\db\ActiveRecord::save() //保存
yii\db\ActiveRecord::insert() //插入
yii\db\ActiveRecord::update() //更新
yii\db\ActiveRecord::delete() //删除
~~~
须知:`save()` 方法会调用 `insert()` 和 `update()` 中的一个, 用哪个取决于当前 AR 对象是不是新对象(在函数内部,他会检查 yii\db\ActiveRecord::isNewRecord 的值)。 若 AR 对象是由 new 操作符 初始化出来的,save() 方法会在表里插入一条数据; 如果一个 AR 是由 find() 方法获取来的, 则 save() 会更新表里的对应行记录。
数据输入与有效性验证
由于AR继承自yii\base\Model,所以它同样也支持Model的数据输入、验证等特性。例如,你可以声明一个rules方法用来覆盖掉yii\base\Model::rules()里的;你也可以给AR实例批量赋值;你也可以通过调用`yii\base\Model::validate()`执行数据验证。
当你调用` save()、insert()、update()` 这三个方法时,会自动调用`yii\base\Model::validate()`方法。如果验证失败,数据将不会保存进数据库。
- 前文
- 安装前的准备
- windows安装Composer
- Linux安装Composer
- 开始使用
- 安装yii2.0
- 初始化项目
- 检测运行环境
- 数据库
- 连接数据库
- 添加
- 查询
- join
- joinWith
- with
- asArray
- offset
- filterWhere
- 关联查询
- 更新
- AR更新
- with和JoinWith的区别?
- Yii2.0框架基础--数据查询之AR类方法一
- 数据库迁移Migration
- 查看最后执行SQL语句
- 事务处理
- 例子
- 控制器
- rules验证方法
- behaviors行为
- actions动作
- 模型
- 模型使用
- attributeLabels
- tableName
- fields
- 视图
- 显示视图
- 获取配置参数
- 格式化时间显示
- Activeform效果
- Activeform表单部分组件使用方法
- RESTful服务
- 版本化控制
- 邮件mail
- 邮件配置
- 邮件样板
- session
- Yii2.0 Session操作大全(增、删、改、销毁、Session数组赋值、读取)
- 缓存
- 跨APP读取缓存(文件缓存)
- Memcache
- 最佳实践
- 控制器
- 模型
- 视图
- 常见问题
- 解决根目录没有vendor目录
- 安装composer-asset插件错误
- Url隐藏index.php
- nginx配置
- Apache配置
- 配置
- 设置系统默认中文提示
- 数据库问题
- where和andWhere不能同时使用吗?
- debug
- 编辑器使用技巧
- phpstorm
- Redis
- redis安装
- redis例子
- RBAC
- Redis和memcache概念
- 生成接口文档
- Swagger安装
- Swagger语法
- 扩展
- 七牛云存储
- 视频缩略图
- Pjax
- A链接不能跳转解决办法