2016-06-16 6 views
1

FROM_UNIXTIMEを使用するYiiでクエリを実行しようとしています。次のコードは動作しません。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')), 
)); 

しかし、私は、クエリのこのSQLのバージョンを実行すると、予想通り、私は結果を得る:

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」を削除してもうまくいきます。あなたは順序を指定してSAperateパラメータに制限するか、 '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 

)、それを使用する必要があります)。