2016-07-28 3 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

sql

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

감사합니다. 감사합니다. 감사합니다. –

0

당신은 OrderProduct 테이블 만 수량 합계를 얻으려면보십시오. 그래서,이 같은 활동 기록을 사용하지만, 간단한 쿼리와 명령, 뭔가를 작성하지 않는 것이 좋습니다 수 있습니다 : 여기

$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

좋은 아이디어 ... 감사합니다. –