Yii 2.0.14 支持的新特性介绍

Yii 2.0.14 支持的新特性介绍

  1. yii 框架从 2.0.14 版本开始,在 ActiveRecord 属性赋值时,支持子查询。
    让我们来看一个例子来演示一下这个新的特性

以 CRM 中客户主表中的 visit_total_number 为例。该字段记录客户的跟进次数

在 2.0.14 版本以前,我们不得不这样做

/* 1. 查询 */
$number = ClientVisitModel::find()
    ->select(['visit_id'])
    ->where(['client_id' => $clientId])
    ->count();

/* 2. 查询 */
$clientModel = ClientMainModel::findOne($clientId);
$clientModel->visit_total_number = $number;

/* 3. 更新 */
$clientModel->save(FASLE);

或者

/* 1. 查询 */
$number = ClientVisitModel::find()
    ->select(['visit_id'])
    ->where(['client_id' => $clientId])
    ->count();

/* 2. 更新 */
ClientMainModel::updateAll(
    ['visit_total_number' => $number],
    ['client_id' => $clientId]
);

现在,我们可以这样做

$expression = new \yii\db\Expression('COUNT(visit_id)');

$subquery = ClientVisitModel::find()
    ->select([$expression])
    ->where(['client_id' => $clientId]);

/* 1. 查询 */
$clientModel = ClientMainModel::findOne($clientId);
$clientModel->visit_total_number = $subquery;

/* 2. 更新 */
$clientModel->save(FASLE);

或者

$expression = new \yii\db\Expression('COUNT(visit_id)');

$subquery = ClientVisitModel::find()
    ->select([$expression])
    ->where(['client_id' => $clientId]);

/* 一次搞定! */
ClientMainModel::updateAll(
    ['visit_total_number' => $subquery],
    ['client_id' => $clientId]
);
最后修改:5天前
如果觉得我的文章对你有用,请随意赞赏

共有 0 条评论