exp
- это функция PHP, в andWhere
вы подготавливаете запрос SQL, который будет выполняться на сервере SQL.Анализатор SQL на сервере SQL не может выполнять функции PHP.Вы должны использовать функцию MySQL DATE_FORMAT здесь:
$promise = new ActiveDataProvider([
'query' => Post::find()
->where('status = "show"')
->andWhere(['<=', 'DATE_FORMAT(date1, "%Y")', 'date2'])
->orderBy('id'),
]);
Пожалуйста, измените названия полей date1
и date2
, чтобы сделать их более информативными.Напримерorder_date
, delivery_date
и т. Д.
Если в вашем коде часто используются значения status
, их следует заменить константами класса Post
.
Если date2
содержит только значения года, лучше использовать тип YEAR .