2019-06-12 17:29:48 211次浏览 2条回答 0 悬赏 100 金钱

微信截图_20190612172427.png 如上图中的条件 如果判断所有的搜索可能有几百种情况 有没有好的思路,方法。 andFilterWhere() 应该实现不了,数据表里面的是根据店铺每日订单的每个商品来存储的,有些数据需要根据搜索出来的计算才能得到。 求大神指点。

补充于 2019-06-12 17:31

002.png

补充于 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;
        }
?>

这是其中一个判断情况

亿速云

最佳答案

  • 醉丶春风 发布于 2019-06-13 11:26 举报

    怎么个交叉法, 选了的就加到搜索条件里面, 没有的就不加不行吗

    3 条回复
    回复于 2019-06-13 12:06 回复

    我现在是用if条件去判断搜索了哪些条件的,判断了每种各个搜索项的组合,这样效率实在是太慢了,我请教一下又没有别的好方法

    回复于 2019-06-13 13:53 回复

    你可以直接判断字段, 如果为空就让他等于null, 然后直接放在 andfilterwhere里面就好了, 会自动过滤的

    回复于 2019-06-13 14:00 回复

    嗯嗯 多谢指点

  • 回答于 2019-06-13 13:22 举报

    我在碰到这个是直接加一些默认值,andFilterWhere()应该够用了,先把需要的数据搜索,然后再计算数值,这个貌似没什么好的方法

    1 条回复
    回复于 2019-06-13 13:34 回复

    好的我去试试 感谢

您需要登录后才可以回答。登录 | 立即注册
EizoPeter
总监

EizoPeter

注册时间:2018-08-30
最后登录:12小时前
在线时长:26小时43分
  • 粉丝4
  • 金钱1800
  • 威望0
  • 积分2060

热门问题