Я использую Laravel Translatables. Но когда я выполняю, я получаю сообщение об ошибке Call to a member function hasTranslation() on null
, Вот мой код
<?php
if($slider->product->hasTranslation($locale))
{
$type = $slider->product->translate($locale)->product_name;
}
else{
$type = $slider->product->translate('en')->product_name;
} //echo $type; exit;
?>
$slider->product
не является нулевым и $locale
имеет значение 'en'
Этот код работает нормально вчера, единственное изменение, которое я сделал, это то, что из панели администратора я только что удалил необходимую проверку из поля добавления продукта.
Проверьте настройку ваших отношений $slider->product
не нуль
и модель имеет use Translatable
черта характера
есть вспомогательный метод с именем option ()
optional($slider->product)->hasTranslation($locale)
этот метод позволит избежать исключения.
НЕ РЕКОМЕНДУЕТСЯ ИСПОЛЬЗОВАТЬ ЭТО (опционально ()), ЕСЛИ $ slider-> product ДОЛЖЕН ИМЕТЬ ЗНАЧЕНИЕ
просто ярлык для чистого кода
if(optional($slider->product)->hasTranslation($locale))
$type = optional($slider->product)->translate($locale)->product_name;
else
$type = optional($slider->product)->translate('en')->product_name;
Я исправил эту проблему с другим if
состояние. Модифицированный код
<?php if(!empty($slider->product)) {
if($slider->product->hasTranslation($locale))
{
$type = $slider->product->translate($locale)->product_name;
}
else{
$type = $slider->product->translate('en')->product_name;
}
}
?>