2016-07-28 4 views
1

を追加私が基準作成:YiiのCDbCriteriaが列

 $ids = array(1,2,3); 
     $criteria = new CDbCriteria; 
     $criteria->select = 'SUM(quantity) as quan'; 
     $criteria->with = array('order'); 
     $criteria->condition="order.customer = ".Yii::app()->user->id." AND order.status_id <> 4 AND order.status_id <> 3 AND order.type = 0"; 
     $criteria->addInCondition("product_id", $ids); 
     $order_prod = OrderProduct::model()->find($criteria); 

をしかし、私はこれを実行すると、私はエラーを得た:基準で

1140 In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column 'als.t.id'; this is incompatible with sql_mode=only_full_group_by. The SQL statement executed was: SELECT SUM(quantity) as quan, t . id AS t0_c0 , order . id AS t1_c0 , order . phone AS t1_c1 , order . email AS t1_c2 .

は私が数量の合計のみを使用して選択します。

+0

この完全なクエリですか?完全なクエリを表示 – user1234

答えて

1

こんにちは無効にonly_full_group_by

あなたはOrderProductテーブルからのみ数量合計を取得したいこのsql

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); 
+0

それはworks.thankの –

0

を試してみてください。だから、それはこのようにアクティブなレコードを使用していますが、単純なクエリを使用して、コマンド、何かを書くことではない方が良いでしょう。ここ

$result = Yii::app()->db->createCommand(' 
    SELECT SUM(t.quantity) as quan 
    FROM order_product t 
    LEFT JOIN order ON order.ID = t.order_id 
    WHERE 
     order.customer = :userId AND 
     order.status_id NOT IN (3,4) AND 
     order.type = 0 AND 
     t.product_id IN (1,2,3) 
')->queryScalar([ 
    ':userId' => Yii::app()->user->id, 
]); 

「dbが」あなたのCDbConnectionコンポーネントの名前です。 OrderProductテーブル名と結合条件は、システムによって異なる場合があります。

+0

良いアイデア...ありがとう –

関連する問題