2016-12-14 30 views
0

関連するモデルプロパティが表示されるビューがあります。Eloquent:別名で関連モデルを取得

{{ $product->category->title_en }} 

私はむしろ

{{ $product->category->title }} 

のようにこれを入れて、私のコントローラでのロケール選択を作ると思います。

メインモデルと例えば:

ビュー:

{{ $product->title }} 

コントローラー:

if ($locale === 'en') { 
    $product = Product::where(id of something)->get([ 
     'title_en AS title' 
    ]) 
} 

どのように関連するのエイリアスを設定することができますか? または、より良い選択肢がありますか?

+0

ここから '$ locale'を入手しました ? –

+1

あなたのためのロケールハンドリングを行う素晴らしいパッケージがいくつかありますので、 '{{$ product-> category-> title}}'と書くことができます。ユーザーが設定したロケールに従って正しいローカライズタイトルを取得しますページ。 https://github.com/dimsav/laravel-translatable –

+0

または1月中にLaravel 5.4のリリースを待つことができます:D –

答えて

1

にあまりにも他の列の名前を記述する必要があり、私は自分のプロジェクトのために、このためのヘルパー関数を作成しました。ロケールはすべてのURLの中で最初のものなので、私はそれを爆発させ、このように使用します。ビューファイルで

function translate($model, $column) 
{ 
    $url = explode('/', Request::path()); 
    return $model[$column . '_' . $url[0]]; 
} 

、私が使用します。

{{ translate($product, 'title') }} 

またあなたは現在のロケールを取得するためにApp::getLocale()を使用することができます。

0

あなたはselect()を使用することができますが、select()

if ($locale === 'en') { 
     $product = Product::where(id of something) 
    ->select('title_en as title','col2','col3'....) 
    ->get() 
    } 
関連する問題