灰太狼

灰太狼

这家伙有点懒,还没写个性签名!

  • 财富值3290
  • 威望值150
  • 总积分5550

个人信息

  • 首先你要创建一个模型kmModel

    $query = Km1::find();
     $dataProvider = new ActiveDataProvider([
         'query' => $query,
         'sort' =>[
             'defaultOrder'=>['created' => SORT_DESC],
          ],
          'pagination' => [
               'page' => $this->page - 1, // oh, shit. this is zero-base
               'pageSize' => $this->pagesize,
           ],
     ])
     $query->select($this->getSelectFields())
         ->andFilterWhere([条件]);
     return $dataProvider;
    
      控制器里这么写:
       $kmModel = new kmModel;
       $dataProvider = $kmModel->search();
       if (empty($dataProvider->getModels())) {
            return '无查询结果';
       }
    
  • 2017-07-19 已签到
    连续签到1天,获得了5个金钱
  • 谢谢, http://www.yiichina.com/code/1061 看这里,这个是之前写的代码例子!代码都是自己敲出来的。
    我建议是先摸透设计模式思想。只是局限于使用,不算是摸透了。当你摸透了。随处都是代码!万物都可转为代码!
    如果硬生的只是去看某一部分代码,不知道中心思想,也是白费的。虽然代码流程你懂了。但是设计思想你领悟不到!

    高级的架构师,都是设计思想的发明家!

  • 回复了 的说说
    自己辛辛苦苦写的方案,不被老总认可,却又被拿去跟客户讲解,是一种什么感受
    应该高兴才对,台前没有你,但是你才是幕后的大佬!证明了你的成功!要换一种角度去想!
  • 发布了话题
    面向对象设计之什么是扩展?
  • 发表了说说
    面向对象设计之什么是扩展?
  • 回复了 的回答

    多个条件灵活拼什么拼 条件个数不定 怎么拼接?尽说这种一个条件或者条件个数特定的 一群垃圾

    多个条件灵活拼接:
    /**

     * 条件数组
    

    ps:r如果以后有多个查询条件,只需要写这个数组就行。
    数组还支持自定义查询参数名
    写法结构为: '自定义' => ['字段名','='],
    字段名与运算符前后顺序没有过多做兼容解析

     * key(查询条件名) => value(数据存储名)
     */
    protected static $conditionFiles = [
        'orderSn' => '=',
        'orderState' => '=',
        'buyerMobile' => 'like',
    ];
    

    /**

     * 封装查询方法
     * @param $params
     * @return array|string|\yii\db\ActiveRecord[]
     */
    public function Search($params){
        $result = '';//初始查询结果为空
        $condition = $this->autoLoadSearchClass($params);
        if(count($condition)>0){
            $result = self::createSql($condition);
        }
        return $result;
    }
    
    /**
     * 生成SQL
     * @param $condition
     * @return array|\yii\db\ActiveRecord[]
     */
    private function createSql($condition){
        $query = Orders::find();
        foreach ($condition as $key=>$val){
            $query->andWhere($val);
        }
        $sql = $query->createCommand()->getRawSql();
        $result = $query->all();
        return  ['result' => $result,'sql'=>$sql];
    }
    
    /**
     * 根据查询参数匹配类
     */
    protected static $classFiles = [
        'orderSn' => 'searchOrderSn',
        'orderState' => 'searchOrderState'
    ];
    public static function getClassName($fileName){
        return self::$classFiles[$fileName];
    }
    public static function getFiles($key){
        if(isset(self::$conditionFiles[$key])){
            return self::$conditionFiles[$key];
        }else{
            return '';
        }
    }
    

    /**

     * 自动加载查询参数扩展类
     * @param $ParamsName
     * @return array|string
     */
    public function autoLoadSearchClass($ParamsName){
        if(!isset($ParamsName) || !is_array($ParamsName)){
            return '';
        }
        $condition = [];
        foreach($ParamsName['OrdersSearch'] as $key => $val) {
            $condition_array = self::getFiles($key);//检查设置$key条件属性数组
            if (empty($val) || empty($condition_array)) {
                continue;
            }
            $value = self::getFiles($key);
            if(is_array($value)){
                $operator = $value[1];//自定义参数名时使用
            }else{
                $operator = $value;
            }
            $condition[] = [$operator, $key, $val];
        }
        return $condition;
    }
    
  • 情况1:
    $updateCommon['type'] = 1;
    OrderCommon::updateAll($updateCommon, ['orderId' => $orderId]);

    情况2:
    $orderModel->orderCommon->type = 1;
    $orderModel->orderCommon->save();

    这两种更新方式,哪个更快?

  • 回复了 的回答

    这个应该是网页到数据库执行操作移动端到执行数据库更新要晚吧;执行操作肯定分先后的,数据库更新会自动锁表的。要么在刚进方法就进队列,个人觉得没意义;这个和网络有点关系,导致你以为 你先点击网页,在点移动端,其实在方法里应该是先接受到移动端的请求,之后才是网页吧

    网页和移动端,分别调用自己的方法,不是调用同一个方法的。

副总裁 等级规则
5550/10000
资料完整度
10/100
用户活跃度
0/100

Ta的关注

8

Ta的粉丝

28

Ta的访客

120