Создание многоязычного сайта с резервным вариантом на английском языке.Laravel eloquent, сменить запрос, если нет результатов
У меня есть таблица "языки"
__________________
|language | text |
------------------
| "EN" | "good" |
------------------
| "NL" | "goed" |
------------------
Мой красноречивым запрос в контроллере:
Languages::language('EN')->take(1)->get();
В Типовых языках я функция Области применения:
public function scopeLanguage($query, $language)
{
$query->where('language', '=', $language);
}
который отлично работает. но я, когда я пытаюсь запросить язык, который не существует в таблице. , например:
Languages::language('DE')->take(1)->get();
не возвращает никаких результатов, но я хочу иметь запасной вариант на «EN»
я попытался вещи, как:
public function scopeLanguage($query, $language)
{
$query->where('language', '=', $language);
if ($query->count() > 0) {
return $query;
} else {
return $query->where('language', '=', "EN");
}
}
без удачи, кажется, что это добавляет новый, где запрос к существующему. Можно ли удалить/изменить запрос ?. без разрыва цепи (фактическая модель имеет несколько функций, сфера применения)
Попробуйте добавить '-> получить()' в вашей области видимости функции, без выполнения Я предполагаю, что есть нет результата и не учитывается также – Danny
Выполнение этой области означает, что вы проигнорируете другие «wheres», которые вы применяете позже (или области), так что это не так. –
Если он добавляет условие 'where' к запросу, вы можете заменить его на' orWhere', и он будет работать нормально. –