Не происходит JOIN таблицы.

Не происходит JOIN таблицы.

Связи в модели Club




public function relations()

{

return array(

        'areas'=>array(self::MANY_MANY,'Area','club2area(club, area)'),

        );

}

 

Если в контроллере не использовать limit, все работает отлично, если вставляю limit JOIN не происходит. Или если один limit без condition работает нормально.




$model=Club::model()->with('areas')->findAll(array(

        //'limit'=>1,

        'condition'=>'areas.id=:area',

        'params'=>array(':area'=>$_REQUEST['area']),

        ));

 

Та же проблема с CActiveDataProvider… Здесь просто join не происходит.




    $dataProvider=new CActiveDataProvider('Club', array(

        'criteria'=>array(

        'with'=>array('areas' ),

        'condition'=>'areas.id=:area',

        'params'=>array(':area'=>$_REQUEST['area']),

),

        'pagination'=>array( 'pageSize'=>Yii::app()->params['PerPage'] ),

        ));

 

Попробуйте так:




$model=Club::model()->with(array(

    'areas'=>array(

        'condition'=>'areas.id=:area',

        'params'=>array(':area'=>$_REQUEST['area']),

    )

))->findAll(array(

    'limit'=>1,

));



Дело в том, что появление limit разбивает запрос такого плана на две штуки, поэтому condition у вас попадает не в тот запрос в который должен.

Спасибо. Помогло.

Еще одно решение добавить together


$model=Club::model()->with('areas')->together()->findAll(array(

		'limit'=>1,

		'condition'=>'areas.id=:area',

		'params'=>array(':area'=>$_REQUEST['area']),

		));



Для CActiveDataProvider помогло расширение как показано здесь http://www.yiiframework.com/forum/index.php?/topic/7420-undestanding-relational-queries-with-cactivedataprovider/