0

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はnull$localeではなく、値があります'en' このコードは昨日正常に機能しています。私が行った唯一の変更は、管理パネルから、製品の追加フィールドから必要な検証を削除したことです。

4

2 に答える 2

2

リレーションの設定が$slider->productnullでないことを確認してください

モデルにはuse Translatable特性があります

optional() というヘルパーメソッドがあります

optional($slider->product)->hasTranslation($locale)

このメソッドは、例外のスローを回避します。

それを使用することはお勧めしません (optional()) $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;
于 2018-12-27T09:25:22.417 に答える