1.参数检测
if (!isset($options['user_id']) || (int)$options['user_id'] <= 0) { return self::assign(99, Yii::t('user', 'User id is required')); }
2.定义表
$tables = [Contacts::tableName() . ' c']; $left_join[] = [ 'table' => User::tableName() . " as u", 'relation' => "c.contact_id=u.user_id" ];
3.固定条件
$map = ['and', ' 1=1 '];//查询条件 $map[] = ['and', 'c.user_id =:user_id']; $params[':user_id'] = intval($options['user_id']);
4.动态条件
$map[] = ['and', 'c.status =:status']; if (isset($options['status']) && intval($options['status']) > 0) { $params[':status'] = intval($options['status']); } else { $params[':status'] = self::STATUS_VALID; } if (isset($options['contact_id']) && intval($options['contact_id']) > 0) { $map[] = ['and', 'c.contact_id =:contact_id']; $params[':contact_id'] = intval($options['contact_id']); $options['get_one'] = true; }
5.页数
$options['page'] = isset($options['page']) ? $options['page'] : 1; $options['limit'] = isset($options['limit']) ? $options['limit'] : 12; $options['start'] = isset($options['nopage']) && $options['nopage'] ? (int)(($options['page'] - 1) * $options['limit']) : 0;
6.排序参数
$options['order_by'] = isset($options['order_by']) ? $options['order_by'] : 'list_order DESC,created ASC';
7.查询字段
$def = 'c.id,c.contact_id as user_id,c.status,c.created_by,c.created,u.nickname,u.head_url, first_name,u.last_name,u.user_name,u.parent_id'; $options['fields'] = isset($options['fields']) ? $options['fields'] : $def;
8.查询返回
$data = self::listData($tables, $map, $params, $options, $left_join); $data = empty($data) ? "" : $data; return self::assign(0, Yii::t('common', 'Success'), $data);