2016-03-25 34 views
0

在公司模型中,我加入了模型user和business_unit。如何获取YII中CDbCriteria的连接属性?

$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"; 

它的工作原理。但我得到的只有公司attributes.How我得到business_unitusers属性以及属性company

回答

1

你应该创建“公司”模型关系,为用户和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); 
+0

谢谢它的工作原理...更多的事情是如何获得嵌套连接属性 –

+0

在foreach循环每个关系(因为关系是has_many) –