2016-03-30 4 views
0
$criteria->select = 't.*,count(business_unit.id) as TotalBusinessUnits,count(users.id) as TotalUsers ,count(positions.id) as TotalPositions, count(skills.id) as TotalSkills , users.first_name , users.last_name, count(question_bank.id) as TotalQuestions'; 

    $criteria->condition = "`t`.status = '1'"; 
    $criteria->group = 't.id'; 
    $criteria->order = 'created DESC'; 
    $criteria->join = " inner join users on users.company_id = `t`.id"; 
    $criteria->join .= " left join business_unit on business_unit.company_id = `t`.id"; 
    $criteria->join .= " left join billingdetails on billingdetails.company_id = `t`.id"; 
    $criteria->join .= " left join positions on positions.company_id = `t`.id"; 
    $criteria->join .= " left join skills on skills.company_id = `t`.id"; 
    $criteria->join .= " left join question_bank on question_bank.company_id = `t`.id"; 

Он отлично работает и получает все столбцы, которые я выбираю. Но когда я передаю его в CActiveDataProvider, он получает только this атрибутов.CActiveDataProvider не предоставляет выбранные столбцы

return new CActiveDataProvider($this, array(
     'criteria'=>$criteria, 
     'pagination' => $pages 
    )); 

Как я выбираю все столбцы?

+1

У вас есть имена этих столбцов, которые перечислены как общедоступные переменные на вашей модели? добавьте 'public $ TotalBusinessUnits;' в эту модель и посмотрите, можете ли вы получить это значение. – Chris

+0

можете ли вы его активировать? –

ответ

1

В Yii, если вы используете as для SQL, она нуждается в открытом переменной для хранения значения в.

добавить все пользовательские имена столбцов в качестве общественных переменных на модели и все должно быть денди.

поэтому, если у вас есть $criteria->select = 't.*,count(business_unit.id) as TotalBusinessUnits, это создаст соответствующий sql. но Yii не распознает TotalBusinessUnits как допустимый столбец таблицы.

Так что если вы добавите public $TotalBusinessUnits; в свою модель, у Yii есть место для хранения этого значения.

Также вы должны добавить TotalBusinessUnits в свое безопасное правило атрибутов, чтобы Yii знал, что он безопасен для извлечения.

public $TotalBusinessUnits; 

public function rules(){ 
    return array(
     // your rules 
     array('TotalBusinessUnits','safe'), 
    ); 
} 

public function search(){ 
    $criteria->select = 't.*,count(business_unit.id) as TotalBusinessUnits'; 
    // your criteria 
    return new CActiveDataProvider($this, array(
     'criteria' => $criteria, 
    )); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^