Yii2 molde模型相关使用技巧

今天整理一些 Yii2 Model模型在开发中常用到的一些方法我技巧。
模型是 MVC 模式中的一部分, 是代表业务数据、规则和逻辑的对象。

获取查询 SQL

1
2
3
4
5
$query = User::find()->where(['like', 'name', 'ewan%', false]);
$commandQuery = clone $query;
// SELECT * FROM `user` WHERE `name` LIKE 'ewan%'
echo $commandQuery->createCommand()->getRawSql();

简单查询技巧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
where(): 添加查询条件。
select(): 添加查询字段。
with(): 该查询应执行的关系列表。
indexBy(): 根据索引的列的名称查询结果。
asArray(): 以数组的形式返回每条记录。
orderBy(): 按指定字段排序。
User::find()->one(); // 返回一条数据,返回对象;
User::find()->column(); // 返回查询结果中的第一列的值,返回数组;
User::find()->scalar(); // 返回查询结果的第一行中的第一列的值;
User::find()->all(); // 返回所有记录数据;
User::find()->count(); // 返回记录的数量;
User::find()->sum('num'); // 返回指定字段('num')的总和;
User::find()->average('num'); // 返回指定字段('num')的平均值;
User::find()->min('num'); // 返回指定字段('num')的最小值;
User::find()->max('num'); // 返回指定字段('num')的最大值;
User::find()->exists(); // 返回一个值,该值指示查询结果是否有数据;

关联查询

1
2
User::hasOne():返回对应关系的单条记录
User::hasMany():返回对应关系的多条记录

模型中事务处理

1
2
3
4
5
Yii::$app->db->transaction(function() {
$order = new Order($customer);
$order->save();
$order->addItems($items);
});

批量插入

批量插入的问题,已经写了一篇《Yii2 批量插入》,点击链接查看即可。

表单验证两个字段选取一个

1
2
3
4
5
6
7
8
9
10
public function rules()
{
return [
[['card_id', 'card_code'], function ($attribute, $param) { //至少要一个
if (empty($this->card_code) && empty($this->card_id)) {
$this->addError($attribute, 'card_id/card_code至少要填一个');
}
}, 'skipOnEmpty' => false],
];
}

Like 模糊查询

1
$query = User::find()->where(['LIKE', 'name', 'ad%', false]); // SELECT * FROM `user` WHERE `name` LIKE 'ad%'
坚持原创技术分享,您的支持将鼓励我继续创作!