problema con CreateCommand

Hola a todos, escribo por que tengo un problema con el uso de


Yii::app()->db->createCommand();

Her revisado la info aqui, y he construido el siguiente commando


$rows = Yii::app()->db->createCommand()

                ->select( array( 'SUM( `price` ) as earnings,', 'YEAR( DATE( `order`.`orderTime` ) ) as year,', 'MONTHNAME( DATE( `order`.`orderTime` ) ) as month' ) )

                ->from( array( 'tbl_order` `order`' ) )

                ->leftJoin( '`tbl_existence` `existence`', '`existence`.`orderId` = `order`.`id`' )

                ->where( 'DATE( `order`.`orderTime` ) BETWEEN DATE_SUB( DATE( NOW( ) ), INTERVAL 1 YEAR ) AND DATE( NOW( ) )' )

                ->group( array( 'YEAR( DATE( `order`.`orderTime` ) )', 'MONTH( DATE( `order`.`orderTime` ) )' ) )

                ->order( array( 'YEAR( DATE( `order`.`orderTime` ) ) ASC', 'MONTH( DATE( `order`.`orderTime` ) ) ASC' ) )

                ->queryAll();

sin embargo obtengo el siguiente error:

[indent]Missing argument 1 for CDbConnection::createCommand(), called in C:\…[/indent]

hasta donde he visto no necesito pasar algun parametro a createCommand() si quiero construir el SQL encadenando metodos pero eso es lo que me manda el error, por otro lado si construyo el SQL con un array de parametros tal como


$rows = Yii::app()->db->createCommand( array(

                'select' =>  array( 'SUM( price ) as earnings,', 'YEAR( DATE( order.orderTime ) ) as year,', 'MONTHNAME( DATE( order.orderTime ) ) as month' ),

                'from' => array( 'tbl_order order' ),

                'leftJoin' => array( 'tbl_existence existence', 'existence.orderId = order.id' ),

                'where' => array( 'BETWEEN', 'DATE( order.orderTime )', array( 'DATE_SUB( DATE( NOW( ) ), INTERVAL 1 YEAR )', 'DATE( NOW( ) )' ) ),

                'group' => array( 'YEAR( DATE( order.orderTime ) )', 'MONTH( DATE( order.orderTime ) )' ),

                'order' => array( 'YEAR( DATE( order.orderTime ) ) ASC', 'MONTH( DATE( order.orderTime ) ) ASC' ),

            ) )->queryAll();

el error que me envia es:

[indent]PDO::prepare() expects parameter 1 to be string, array given[/indent]

ya no se que hacer. y no encuentro casos parecidos en el foro, gracias.

Creo q Tu Problema esta en como estas declarando los valores que les pasas a select, from, where…

Intentalo asi




$rows = Yii::app()->db->createCommand()

                ->select('SUM( `price` ) as earnings,', 'YEAR( DATE( `order`.`orderTime` ) ) as year,',...)

                ->from( 'tbl_order` `order`' ) 

                ....

                 ...




Si el uso de arreglos

Salud2