2016-06-16 3 views
1

FROM_UNIXTIME을 사용하는 Yii에서 쿼리를 수행하려고합니다. 다음 코드는 작동하지 않습니다 : 나는 쿼리의 SQL 버전을 실행할 때 FROM_UNIXTIME with YII

$model = Banner::model()->findAll(array(
    'condition' => 't.banner_kategori=:parent AND t.status=:status AND (FROM_UNIXTIME(t.publish_date) <= :datetime AND FROM_UNIXTIME(t.unpublish_date) >= :datetime OR t.publish_date = "" AND t.unpublish_date = "" OR FROM_UNIXTIME(t.publish_date) <= :datetime AND t.unpublish_date = "") ORDER BY created DESC LIMIT 10', 
    'params' => array(':parent' => $parent, ':status' => 1, ':datetime' => date('Y-m-d H:i:s')), 
)); 

그러나, 나는 같은 결과를 얻을 수

예상 :

SELECT *, FROM_UNIXTIME(publish_date) AS wew 
FROM banner 
WHERE banner_kategori=1 
AND status=1 AND (FROM_UNIXTIME(publish_date) <= CURDATE() AND FROM_UNIXTIME(unpublish_date) >= CURDATE() OR publish_date = '' AND unpublish_date = '' OR FROM_UNIXTIME(publish_date) <= CURDATE() AND unpublish_date = '') 
ORDER BY created DESC LIMIT 10 

가 어떻게 첫 번째 쿼리가 작동받을 수 있나요?

+1

이것은 조건에 의한 주문 제한을 언급했기 때문에 'ORDER BY created DESC LIMIT 10'을 제거하면 효과가 있습니다. 당신은 순열 매개 변수에 명령과 제한을 넣거나'CDbCriteria' 객체를 사용할 수 있습니다 –

답변

0

당신은이 방법

$model = Banner::model()->findAll(array(
    'condition' => 't.banner_kategori=:parent AND t.status=:status AND (FROM_UNIXTIME(t.publish_date) <= :datetime AND FROM_UNIXTIME(t.unpublish_date) >= :datetime OR t.publish_date = "" AND t.unpublish_date = "" OR FROM_UNIXTIME(t.publish_date) <= :datetime AND t.unpublish_date = "")', 
    'params' => array(':parent' => $parent, ':status' => 1, ':datetime' => date('Y-m-d H:i:s')), 
    'order'=>'created DESC', 
    'limit'=>10 

))를 사용한다;