@AlexRas

Как правильно настроить поиск в модели yii2?

Здравствуйте, подскажите как правильно сделать фильтрацию данных в GridView.

DatePicker этот https://github.com/2amigos/yii2-date-picker-widget
В GridView настроил все так:
[
	'attribute' => 'created_at',
	'format' => 'datetime',
	'value' => 'created_at',
	'filter' => DatePicker::widget([
		'model' => $searchModel,
		'attribute' => 'created_at',
		'language' => 'ru',
		'clientOptions' => [
			'autoclose' => true,
			'format' => 'dd.mm.yyyy'
		],
	]),
],

Указание даты работает, дата в модель уходит в формате d.m.Y

Дата в базе храниться в int

Знаю что тут нужно изменить, а как не смог понять:
$query->andFilterWhere([
	'id' => $this->id,
	'status' => $this->status,
	'created_at' => $this->created_at,
	'updated_at' => $this->updated_at,
]);
  • Вопрос задан
  • 1341 просмотр
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Добрый вечер.
Попробуйте следующим способом.
В поисковой модели добавьте свойства, правила валидации и условия в запрос
public $date_from;
public $date_to;

[['date_from', 'date_to'], 'date', 'format' => 'php:Y-m-d']

$query->andFilterWhere(['>=', 'created_at', $this->date_from ? strtotime($this->date_from . '00:00:00') : null])
      ->andFilterWhere(['<=', 'created_at', $this->date_to ? strtotime($this->date_to . '23:59:59') : null ]);

Поиск идёт в промежутке между датами.
Измените под свои нужды.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы