['effective_num', 'effective_unit', 'remark'], ]; } public function queryWhere() { $where = []; if(isset($this->params['goods_category_ids']) && !empty($this->params['goods_category_ids'])){ $categoryIds =[]; foreach($this->params['goods_category_ids'] as $v){ $v = json_decode($v,true)?? (array)$v; $categoryIds[] = end($v); } $ids = EffectiveRules::alias('er') ->join('effective_category ec','er.id = ec.effective_id') ->whereIn('ec.goods_category_id',$categoryIds)->distinct(true)->field('ec.effective_id')->column('ec.effective_id'); if(empty($ids)){ $ids = [0]; } $where[] = ['id','IN',$ids]; } return $where; } /** * @notes 获取列表 * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @author likeadmin * @date 2024/07/17 11:49 */ public function lists(): array { $data = EffectiveRules::with(['effectiveWithCategory'=>function(Query $query){ $query->field('id,name'); }]) ->where($this->searchWhere) ->where($this->queryWhere()) ->field(['id', 'effective_num', 'effective_unit', 'remark']) ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) ->select() ->toArray(); foreach($data as $k => $v){ $v['goods_category_ids'] = array_column($v['effectiveWithCategory'],'id'); $data[$k] = $v; } return $data; } /** * @notes 获取数量 * @return int * @author likeadmin * @date 2024/07/17 11:49 */ public function count(): int { return EffectiveRules::where($this->searchWhere)->where($this->queryWhere())->count(); } }