Yii2 搜索问题 6 个搜索条件,需要交叉搜索怎么实现最好? [ 2.0 版本 ]
如上图中的条件 如果判断所有的搜索可能有几百种情况 有没有好的思路,方法。
andFilterWhere()
应该实现不了,数据表里面的是根据店铺每日订单的每个商品来存储的,有些数据需要根据搜索出来的计算才能得到。
求大神指点。
EizoPeter 补充于 2019-06-12 17:31
EizoPeter 补充于 2019-06-13 12:15
<?php
if($this->start_date&&$this->end_date&&$this->shop_name&&$this->spid){
$sum_gross = $query->select([
'gross_sum' => 'sum(gross_margin)',
])
->where(['between', 'create_date', $this->start_date, $this->end_date])
->andWhere(['like','shop_name',$this->shop_name])
->andWhere(['like','spid',$this->spid])
->scalar();
$sum_sale = $query->select([
'sale_sum' => 'sum(saleroom)',
])
->where(['between', 'create_date', $this->start_date, $this->end_date])
->andWhere(['like','shop_name',$this->shop_name])
->andWhere(['like','spid',$this->spid])
->scalar();
$sum_profit = $query->from("yn_goods_analyze_shop_by_day")
->select([
'predict_profit' => "round(sum(saleroom)*0.88-sum(goods_cost)-6,1)"
])
->where(['between', 'create_date', $last_f_date, $last_e_date])
->andWhere(['like','shop_name',$this->shop_name])
->andWhere(['like','spid',$this->spid])
->scalar();
$resp = [
'sum_gross' => $sum_gross,
'sum_sale' => $sum_sale,
'predict_profit' => $sum_profit,
];
return $resp;
}
?>
这是其中一个判断情况
最佳答案
-
怎么个交叉法, 选了的就加到搜索条件里面, 没有的就不加不行吗
共 3 条回复@EizoPeter 你可以直接判断字段, 如果为空就让他等于null, 然后直接放在 andfilterwhere里面就好了, 会自动过滤的
其他 1 个回答
EizoPeter
注册时间:2018-08-30
最后登录:2020-06-18
在线时长:34小时12分
最后登录:2020-06-18
在线时长:34小时12分
- 粉丝6
- 金钱2775
- 威望0
- 积分3115