CDbCommand и CSqlDataProvider

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
neutrino
Сообщения: 1
Зарегистрирован: 2013.11.11, 04:16

CDbCommand и CSqlDataProvider

Сообщение neutrino »

У меня есть следующий код в контроллере:

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

public function actionTest()
    {
        $service = Service::model()->findByAttributes(array('name'=>'ServiceName'));
        $sql = Yii::app()->db->createCommand('SELECT * FROM product WHERE service_id=:service_id')
             ->bindValue(':service_id', $service->id);
        // $products = $sql->queryAll(); works fine
        $provider = new CSqlDataProvider($sql, array(
            'totalItemCount'=>100,
            'sort'=>array(
                'attributes'=>array('id'),
            ),
            'pagination'=>array('pagesize'=>10),
 
        ));
        var_dump($provider->getData());
    }
Этот код не работает. Всё дело в передаче параметров:
- если передаю параметр в объект класса CDbCommand через bindValue, а потом этот объект передаю в $provider - то возникает ошибка когда получаю данные.
- если передаю параметры через аттрибут 'params' класса CSqlDataProvider то всё работает.

yii 1.1.14
CDbCommand failed to execute the SQL statement: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound. The SQL statement executed was: SELECT * FROM product WHERE service_id=:service_id LIMIT 10. Bound with :service_id='7'

yii 1.1.15-dev
CDbCommand failed to execute the SQL statement: SQLSTATE[HY093]: Invalid parameter number: no parameters were bound. The SQL statement executed was: SELECT * FROM product WHERE service_id=:service_id LIMIT 10

Получается, если я передаю в CSqlDataProvider объект CDbCommand, для которого я предварительно сделал биндинг параметров, то эти параметры теряются. На мой взгляд неоднозначно получается, ведь в CSqlDataProvider используются теже методы bindValue и QueryAll и для подстановки и получения результата соответсвенно. Ещё смущают ответы yii логера.
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: CDbCommand и CSqlDataProvider

Сообщение Ekstazi »

Похоже на баг, тоже сталкивался с этим.
Ответить