コード例 #1
0
 /**
  * 活动产品关联搜索
  * @param  array  $options 搜索条件
  * [
  *     'page' => '页码',
  *     'product_name' => '产品名',
  *     'user_name' => '发布人姓名',
  *     'nickname' => '发布人昵称',
  *     'mobile' => '电话',
  *     'status' => '活动状态',
  *     'activity' => '活动',
  * ]
  * @return [type]          [description]
  */
 public function search($options = [])
 {
     $df = ['page' => 1, 'product_name' => '', 'user_name' => '', 'nickname' => '', 'mobile' => '', 'status' => 0, 'activity' => 0];
     $options = array_merge($df, $options);
     $statusFields = [self::STATUS_SAVE, self::STATUS_VERIFYING, self::STATUS_VERIFY_THROUGH, self::STATUS_VERIFY_NOTTHROUGH];
     $activitiesFields = ['7' => '365', '8' => '一呼百应', '9' => '中国好产品'];
     $activitiesFields = array_keys($activitiesFields);
     $options['status'] = in_array($options['status'], $statusFields) ? $options['status'] : 0;
     $options['activity'] = in_array($options['activity'], $activitiesFields) ? $options['activity'] : 0;
     $choose = [self::tableName() . '.status ' => $options['status'], self::tableName() . '.acti_id ' => $options['activity']];
     $choose = array_filter($choose);
     $offset = ($options['page'] - 1) * self::ACT_PAGESIZE;
     $data = self::find()->joinWith(['member' => function ($query) {
         $query->select([Member::tableName() . '.uid', Member::tableName() . '.truename', Member::tableName() . '.nickname', Member::tableName() . '.mobile', Member::tableName() . '.email']);
     }, 'activity' => function ($query) {
         $query->select([ActivityBase::tableName() . '.id', ActivityBase::tableName() . '.subject', ActivityBase::tableName() . '.summary']);
     }, 'product' => function ($query) {
         $query->select([IProductBase::tableName() . '.id', IProductBase::tableName() . '.name']);
     }])->where(self::tableName() . '.status != :del', [':del' => self::STATUS_INVALID])->andFilterWhere(['like', IProductBase::tableName() . '.name', $options['product_name']])->andFilterWhere(['like', Member::tableName() . '.truename', $options['user_name']])->andFilterWhere(['like', Member::tableName() . '.nickname', $options['nickname']])->andFilterWhere(['like', Member::tableName() . '.mobile', $options['mobile']])->andFilterWhere($choose)->offset($offset)->limit(self::ACT_PAGESIZE)->orderBy([self::tableName() . '.id' => SORT_DESC]);
     return $data;
 }