Добрый вечер.
Есть таблица где хранятся данные об авиаперелётах и связанные таблицы, в которых хранятся данные о странах и городах.
Задача в следующем.
Пользователь вводит поисковый запрос о перелётах в определённый период времени. Получает результат поиска, например перелёты между 2 и 15 февраля в город Бангкок. Под результатами поиска надо вывести ссылки, которые будут выводить информацию о перелётах в этот город в других месяцах(существующие).
Пример:
"Бангкок в феврале", "Бангкок в марте", "Бангкок в апреле" ....... "Бангкок в декабре"
Даты о перелётах хранятся в timestamp. Чтобы вытянуть название месяца из timestamp использовал
'FROM_UNIXTIME(flights.date_end, \'%M\'). Это для того, чтобы получить уникальные названия, без повтора.
Получился вот такой запрос
if(($model = self::find()->select(['FROM_UNIXTIME(flights.date_end, \'%M\') as month', 'flights.city_end_id', 'cities.city', 'cities.description'])
->distinct()
->leftJoin('cities', 'cities.id=flights.city_end_id')
->where(['city_end_id' => $id])
->andWhere(['>=', 'date_end', mktime(0,0,0,date('m'),date('d'),date('Y'))])
->asArray()
->all()) !== null){
return $model;
}
else{
return false;
}
Запрос работает, выводит то, что надо. Вот только названия месяца на английском.
Как его перевести на русский в данном случае.
P.S. Нашёл решение.
Проблема была в том, что неправильно доставал из базы дату. Для
FROM_UNIXTIME надо было указать формат
%Y-%m а не
%M.
Теперь выбираются даты по месяцам без повтора, ну а перевести на русский при помощи
Yii::$app->formatter не представляет труда.
if(($model = self::find()->select(['FROM_UNIXTIME(flights.date_end, \'%Y-%m\') as month', 'flights.city_end_id', 'cities.city', 'cities.description'])
->distinct()
->leftJoin('cities', 'cities.id=flights.city_end_id')
->where(['city_end_id' => $id])
->andWhere(['>=', 'date_end', mktime(0,0,0,date('m'),date('d'),date('Y'))])
->asArray()
->all()) !== null){
return $model;
}
else{
return false;
}
// И перевод на русский, при условии, что formatter правильно настроен
echo Yii::$app->formatter->format($model->month, ['date', 'MMMM']);