ошибка генерации запроса в CActiveDataProvider

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
codefather
Сообщения: 3
Зарегистрирован: 2015.05.15, 18:37

ошибка генерации запроса в CActiveDataProvider

Сообщение codefather »

имею модели

Код: Выделить всё

class Obj extends CActiveRecord
{
    public function relations()
    {

        return array(
            'girls' =>array(self::HAS_MANY, 'Girls', 'grl_oid'),
        );
    }
    public function scopes()
    {
        return array(
            'active'=>array(
                'condition'=>'ob_status=2',
            ),
}
}
class Girls extends CActiveRecord
{
    public function relations()
    {

        return array(
            'obj'   => array(self::BELONGS_TO, 'Obj', 'grl_oid'),

        );
    }

    public function scopes()
    {
        return array(
            'active'=>array(
                'condition'=>'grl_status=2',
            ),
            'hasGirls'=>array(
                'condition'=>'grl_id is not null', 
            ),
        );
    }

} 
в контроллере

Код: Выделить всё

$criteria = new CDbCriteria();
        $criteria->scopes =array('active');
        $criteria->with =array('girls:hasGirls');
        $criteria->together = true;

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

при этом в дебаге виден запрос

Код: Выделить всё

SELECT `t`.`ob_id` AS `t0_c0`,
`t`.`ob_status` AS `t0_c1`, `girls`.`grl_id` AS `t1_c0`,... FROM `obj`
`t`  LEFT OUTER JOIN `girls` `girls` ON (`girls`.`grl_oid`=`t`.`ob_id`) AND
(grl_id is not null) WHERE (ob_status=2) LIMIT 10
то есть условие (grl_id is not null) попало не в WHERE , а в ON
Ответить