public function search($pageSize = 10)
{
$criteria = new CDbCriteria();
$criteria->compare('t.first_name', trim($this->first_name), true, 'OR');
$criteria->compare('t.middle_name', trim($this->middle_name), true, 'OR');
$criteria->compare('t.last_name', trim($this->last_name), true, 'OR');
$criteria->compare('t.nick_name', trim($this->nick_name), true, 'OR');
$criteria->compare('t.email', trim($this->email), true, 'OR');
$criteria->compare('t.phone', trim($this->phone), true, 'OR');
$criteria->compare('t.gender', $this->gender);
$criteria->compare('t.status', $this->status);
$orderTable = Order::model()->tableName();
$orderNumberSql = "(select count(*) from {$orderTable} o where o.user_id = t.id) ";
$orderSumSql = "(select sum(total_price) from {$orderTable} o where o.user_id = t.id AND o.paid = :paid) ";
$criteria->compare($orderNumberSql, $this->ordersTotalNumber);
$criteria->compare($orderSumSql, $this->ordersTotalSum);
$criteria->select = ['*', $orderNumberSql . ' as ordersTotalNumber', $orderSumSql . ' as ordersTotalSum'];
$criteria->params[':paid'] = Order::PAID_STATUS_PAID;
return new CActiveDataProvider(__CLASS__, ['criteria' => $criteria, 'sort' => ['defaultOrder' => 'visit_time DESC', 'attributes' => ['ordersTotalNumber' => ['asc' => 'ordersTotalNumber ASC', 'desc' => 'ordersTotalNumber DESC'], 'ordersTotalSum' => ['asc' => 'ordersTotalSum ASC', 'desc' => 'ordersTotalSum DESC'], '*']]]);
}