2016-03-25 17 views
0

Şirket modelinde kullanıcı ve business_unit modellerini bir araya getiriyorum.YII CDbCriteria'da katılma nitelikleri nasıl edinilir?

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

Çalışıyor.

1) ilk şey şudur: Ama

cevap

1

Şu tür kullanıcılar ve business_unit için "şirket" modellerinde ilişkiler oluşturmalıdır niteliklerini company birlikte ben business_unit ve users özelliklerini almak attributes.How sadece şirket almak

$criteria=new CDbCriteria; 
$criteria->compare('id',$this->id); 
$criteria->compare('status',$this->status); 
$criteria->with = array('users', 'businessUnits'); 
$criteria->together = true; 
: Sonra ile kriterlerini oluşturabilir)

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

2: Eğer Şirket modellerinde iki ilişkileri varsa kullanıcıları ve business_unit için, kontrol 10

3) sahip olmak tüm modeller: sahip olduğunuz her model için Ardından

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

kullanıcıları ve iş birimi:

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

Teşekkür:

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

4) Etkin bir veri sağlayıcı sahip olmak o çalışır ... Bir şey daha iç içe geçmiş olsun özellikleri katılmak –

+0

Foreach bisiklet her ilişkide (çünkü ilişkiler has_many) –