Yii2.0框架基础--数据查询之AR类方法一

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()方法。如果验证失败,数据将不会保存进数据库。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值