2017-08-10 100 views
1

假設我們有一個名爲"appointment"的表,它們的字段爲"id","date1""date2"。 最好使用ActiveRecord,我想要實現這個SQL語句:如何比較YII2中的兩個數據庫表字段?

select * from appointment where date1 <> date2 

是否有可能做此例如使用ActiveRecord方法(Appointment :: find())還是應該傳遞可靠的SQL代碼?

回答

1

您可以使用SQL表達式這種情況下傳遞給任何給定的查詢

Appointment::find()->where(new \yii\db\Expression('`date1` <> `date2`')) 
1

我想你可以使用這樣的事情,

Appointment::find()->andWhere('date1 <> date2') 
        ->all(); 
+1

是的,這也適用。但我們最好使用概念表達式,如在文檔中提到的: 「表達式表示一個不需要轉義或引用的DB表達式。表達式對象主要用於將原始SQL表達式傳遞給yii \ db \ Query的方法, yii \ db \ ActiveQuery和相關的類「 – Rev