> 有时候查询某条数据时候,需要用到的条件很多,很繁琐时,建议将这些条件封装起来,供activequery使用。
> 我们这里就拿“订单表”来举例。比如订单状态“待支付”、‘可消费’、“已支付”等等各种条件。而且这些状态条件在很多地方都会同时用到,所以就可以考虑进行封装了。
[TOC]
#### 1. 创建OrderQuery
~~~
namespace common\models;
class OrderQuery extends ActiveQuery
{
//可消费状态筛选
public function queryCanConsumeStatus()
{
return $this->andWhere(['or',
['status' => 1],
['status' => 3],
['status' => 6],
]);
}
//已支付状态筛选
public function queryPayedStatus()
{
return $this->andWhere(['status' => 8]);
}
//待支付状态筛选
public function queryUnpayedStatus()
{
return $this->andWhere(['status' => 2]);
}
}
~~~
#### 2. Order Model中使其支持OrderQuery
~~~
class Order extends \yii\db\ActiveRecord
{
public static function tableName()
{
return 'order';
}
public static function find()
{
return new OrderQuery(get_called_class());
}
}
~~~
#### 3. Controller中使用示例
~~~
$list = Order::find()->where(['customer_id'=>$customerId])->queryCanConsumeStatus()->list();
var_dump($list);
~~~
- 基础教程
- 入门安装
- Yii2 composer 安装慢解决
- Cookies
- 数据库操作
- 数据提供者
- 助手类
- 验证规则
- GridView
- DetailView
- YII2分页
- JS、CSS的引用
- Excel导出
- 中文转拼音
- 发送邮件
- 第三方插件
- Session跨域共享
- Url跨域访问
- 场景应用
- 查询条件链
- Session分布式共享
- Redis的使用
- mongodb
- 高级教程
- 自定义gii模板
- 角色权限管理(RBAC)
- user组件的配置
- 国际化(I18N)
- 小部件(Widget)
- 模块(Module)
- 行为(Behavior)
- 缓存(Cache)
- migrate 数据库迁移
- phpstorm
- 快捷键
- 自定义
- 其它插件