2017-06-09 9 views
0

私のモデルは以下のとおりです。は、MySQL、Laravelの列の一部にnullを取得、次のように翻訳

FAQ:

class Faq extends Model 
{ 
    use Translatable; 

    public $translatedAttributes = ['question', 'answer']; 

    public function faqtranslations() 
    { 
     return $this->hasMany(FaqTranslation::class); 
    } 
} 

とFaqTranslation:

class FaqTranslation extends Model 
{ 
    public $timestamps = false; 

    protected $fillable = ['question', 'answer']; 
} 

そして、ここでは私のshowですFaqControllerのメソッド:

public function show($id) 
{ 
    $faq = Faq::find($id); 

    $faq_translations = Faq::join('faq_translations as t', 't.faq_id', '=', 'faqs.id') 
     ->where('t.faq_id', $id) 
     ->select('t.locale','t.question','t.answer') 
     ->get(); 

    return view('dashboard.faqs.show', compact('faq_translations')); 
} 

次は、ビューページの結果である:

  • {{$faq_translations}}は正しく[{"locale":"lv","question":"lv-q","answer":"lv-a"},{"locale":"ru","question":"ru-q","answer":"ru-a"},{"locale":"en","question":"en-q","answer":"en-a"}]
  • {{$faq_translations[0]->locale}}正しくlv
  • 誤っnulllv-qを表示する必要があります)

同じことが真であるを表示する表示を表示します配列の他のメンバに対して

私はここで何が欠けていますか?

答えて

0

コードをこのようにリファクタリングします。

public function show(Faq $faq) 
{ 
    $faq_translations = $faq->faqtranslations()->get(); 

    return view('dashboard.faqs.show', compact('faq_translations')); 
} 

あなたが同じwildcard名前のルートで、すなわちfaqだけでなく、コントローラ

Route::get('faqs/{faq}', '[email protected]'); 

を持っていることを確認し、それが働いた:)

+0

に役立ちます願っています。私はMySQlに新しいです、私は質問があります - なぜ私は最後にget()メソッドを使用する必要がありますか? – srigu

+0

'get'メソッドは、各結果が' PHP StdClass'オブジェクトのインスタンスである結果を含む 'Illuminate \ Support \ Collection'を返します。オブジェクトのプロパティとして列にアクセスすることで、各列の値にアクセスできます。 –

+0

https://laravel.com/docs/5.4/queries#introductionここでエクスパールされています。問題が解決した場合。答えに投票してください。 :) –

関連する問題