2016-11-06 5 views
0

私のコードは、このコードStackoverflowに基づいています。データベースから正しい言語を選択する関係

私は、ナビゲーションのための3つのテーブル(これは移行です)があります。

Schema::create('navigation_positions', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('slug')->unique(); 
    }); 

    Schema::create('navigation', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('slug')->unique(); 
     $table->string('icon')->nullable(); 
     $table->string('url')->nullable(); 
     $table->integer('sort')->nullable()->default(NULL); 
     $table->integer('parent_id')->unsigned()->nullable(); 
     $table->integer('position_id')->unsigned(); 
     $table->timestamps(); 

     $table->foreign('position_id')->references('id')->on('navigation_positions') 
      ->onDelete('restrict'); 

    }); 

    Schema::create('navigation_translate', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('title'); 
     $table->integer('navigation_id')->unsigned(); 
     $table->integer('language_id')->unsigned(); 
     $table->timestamps(); 

     $table->foreign('navigation_id')->references('id')->on('navigation') 
      ->onDelete('cascade'); 

     $table->foreign('language_id')->references('id')->on('languages') 
      ->onDelete('restrict'); 
    }); 

を私はnavigationにレコードを挿入し、私のウェブサイトは、(languageセッションにlanguage_idを格納)、多言語であるので、私はnavigation_translateに翻訳された言語を保存します。

私はlanguage_idnavigation_positions.slugに従って正しいレコードをnavigation_translateから選択したいと思います。

navigation_positions

["id" => 1, "slug" => "admin-sidebar"] 

navigation_translate:たとえば

は、これが私のレコードです私はadmin-sidebar位置にあるすべての親と子を選択します

["id" => 1, "title" => "User Management", "navigation_id" => 1, "language_id" => 1] 

​​

答えて

0

私はその質問を理解すれば正解かもしれないと思います。

NavigationPosition::where('slug','some-slug') 
    ->with(['navigation' => function ($query) { 
     $query->with(['navigationTranslate' => function ($query) { 
      $query->where('language_id',1); 
     }]); 
    }])->get(); 

参照:with()方法は、熱心な負荷に関係ことができますLaravel Documentation

+0

おかげで、しかし、私のために動作しませ:(私は私が私の応答を編集し、同時に – MajAfy

+0

で3つのテーブルからレコードを選択します、あなたはこのような何かを試すことができる(テストされていない) – Hammerbot

関連する問題