灰太狼
首先你要创建一个模型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();这两种更新方式,哪个更快?