我想将date1
的内容发送到**where()**条件中的exp
函数并返回结果。
- 注:**实际上我想比较两个日期,我需要更改其中一个日期以进行分解
下面是我的代码:
function exp($date){
$date = explode('/', $date);
$Y = $date[0];
$m = $date[1];
$d = $date[2];
return $Y;
}
$promise = new ActiveDataProvider([
'query' => Post::find()
->where('status = "show"')
->andWhere(['<=', exp('date1'), 'date2'])// date1 is: 2018/02/03
->orderBy('id'),
]);
还有别的办法吗?
1条答案
按热度按时间n3schb8v1#
exp
是一个PHP函数,在andWhere
中,您准备了一个将在SQL服务器上运行的SQL查询。SQL服务器上的SQL解析器无法执行PHP函数。您应该在此处使用MySQL DATE_FORMAT函数:请更改字段
date1
和date2
的名称以使其提供更多信息。例如,order_date
、delivery_date
等。如果代码中经常使用
status
值,则应将其替换为Post
类的常量。如果
date2
只包含年份值,则最好使用YEAR类型。