2017-08-10 545 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