Есть SQL запрос следующего вида
$model = News::find()->alias("n")->select(['n.id', 'name', 'id_author', 'cdate_int' => new Expression("FROM_UNIXTIME(cdate_int, '%Y')"), 'status'])
->where(new Expression("FROM_UNIXTIME(cdate_int, '%d') = '$userDay' AND FROM_UNIXTIME(cdate_int, '%m') = '$userMonth' "
. "AND id_region = :id_region", [":id_region" => REGION_ID]))
->joinWith("rating nr")->orderBy("nr.rate DESC")->all();
$result = ArrayHelper::index($model, NULL, "cdate_int");
Он выбирает из моей БД новость за день и месяц, которые указаны в переменных $userDay и $userMonth. Выбранные данные индексируются по году
$result = ArrayHelper::index($model, NULL, "cdate_int");, после чего $result передается в представление index.
Суть проблемы заключается в том, что в DatePicker я выбираю новость за 9 августа, в переменные $userDay и $userMonth попадают нормальные значения и выбираются корректные данные. Если же я пытаюсь выбрать через Datepicker новости за 1 августа, то выборка происходит за 31 июля. Дата хранится в формате timestamp, тип поля INT.
Как можно решить эту проблему расхождении дат? Вот так выглядит код Datepicker в представлении:
DatePicker::widget([
//условие для того чтобы поле ввода не становилось пустым после выбора даты
//или если еще ничего не выбрано
'value' => (empty($today)) ? Yii::$app->getRequest()->getQueryParam('date') : $today,
'name' => 'userdate',
'options' => ['class' => 'col-md-2',
'data-role' => 'datepicker-widget'
],
'id' => 'userdate',
'clientOptions' => [
'onSelect' => new \yii\web\JsExpression("function (date) {
$.ajax({
type: 'GET',
url: 'index/',
data: {date: date},
success: function (result) {
console.log('success' + ' ' + date)
},
});
}"),
],
]);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости