Как получить атрибуты соединения в CDbCriteria в YII?

В модели компании я получаю соединение моделей user и business_unit.

$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('status',$this->status);

$criteria->condition = "`t`.status = '1'";
$criteria->order = 'created DESC';
$criteria->join = " inner join  users on users.company_id = `t`.id";

$criteria->condition = "`t`.status = '1'";
$criteria->order = 'created DESC';
$criteria->join = " inner join  business_unit on business_unit.company_id = `t`.id";

Оно работает. Но я получаю только атрибуты компании. Как я могу получить business_unit а также users атрибуты вместе с company атрибуты

0

Решение

Вы должны создать отношения в «фирменных» моделях для пользователей и business_unit, таких как:

1) Прежде всего, проверьте, есть ли у вас два отношения в моделях компании, для пользователей и business_unit:

public function relations()
{
return array(
'users' => array(self::HAS_MANY, 'User', 'company_id'),
'businessUnits' => array(self::HAS_MANY, 'BusinessUnit', 'company_id'),
);
}

2) Затем вы можете создать критерии с:

$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('status',$this->status);
$criteria->with = array('users', 'businessUnits');
$criteria->together = true;

3) Иметь все модели:

$models = Company::model()->findAll($criteria);

Тогда для каждой модели у вас есть пользователи и бизнес-единица:

foreach($models as $m)
{
// Users
$users = $m->users;
$bu = $m->businessUnit;
}

4) Иметь активного поставщика данных:

$dataProvider = new CActiveDataProvider('Company', array('criteria' => $criteria);
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector