使用Yii框架2.0时,我有一个数据库表,其中列为"from_date"和"to_date"。我想选择并统计所有记录,其中:
- 今天不在从日期到日期之间。甚至不等于这些日期(!($from_date<=$today)&!($today<=$to_date))
或
- from_date 为NULL,to_date为空。因为在某些记录中,这些日期是空的,所以也需要对它们进行选择和计数
我有一个扩展ActiveRecord类的模型,所以我可以使用以下代码来检索数据:
ModelClass::find()-where('big>small')->andWhere('1<2')->orWhere('3>1')->count();
我试着阅读Yii2.0的文档,但不知道如何使用not BETWEEN OR EQUAL NULL。
对于null,可以使用以下代码:
ModelClass::find()->where([
'from_date' => null,
'to_date' => null,
])
从指南中,您可以轻松地链接where属性:http://www.yiiframework.com/doc-2.0/yii-db-query.html#where%28%29-详细
在反查询之前必须传递参数'NOT',例如:
$query->andWhere(['not',['id'=> null]]);
你可以试试这个
->andWhere(['NOT',
['AND',
['>=', 'fromTime', (new DateTime($from_date))->format('H:i:s')],
['<=', 'toTime', (new DateTime($to_date))->format('H:i:s')]
]
]);