2017-04-25 3 views
1

通常、3つのテーブルをクエリして結合する方法はわかっていますが、ここではその方法を理解できません。 - >列Laravelの3つのテーブルから選択するためのクエリを構築する

id 
name 
image 

サブカテゴリ - >列

id 
table1_id 
name 
image 

サブサブカテゴリ - >列

id 
table2_id 
name 
image 

カテゴリ:事は、私は3つのテーブルに従っているということです

画像はCategoryまたはCategory->Sub-Categoryまたは第3レベルにのみ追加することができます

私がしようとしているのは、ページにすべての画像を表示して、どのカテゴリに追加したのかを示すときです。

私のモデルではすべてのリレーションを作成しましたが、正確にクエリする方法はわかりません。現在は

SubSubCategories::all(); 

例のように、すべての画像を照会:

Iは、サブサブカテゴリー(city)を持つサブカテゴリーがあり、メインカテゴリ(Country)(district)を持っています。

image1は、のSub-Sub-Categoryに追加されます。画像が表示されているときに表示するには

images1Country->District->Cityに追加しました。

誰かが私のクエリや多分私の関係を私に見せることができますか?テーブルの列が間違っていますか?

これは私がこれまで試したものを

$subsubcategories = DB::table('sub_sub_category') 
       ->join('sub_category', 'sub_sub_category.sub_cat_id', '=', 'sub_category.sub_cat_id') 
       ->join('category', 'category.category_id', '=', 'sub_category.sub_cat_id') 
       ->select('sib_sub_category.*', 'sub_category.*', 'category.*') 
       ->get(); 

そして、私の見解で

{{ $subsubcategory->sub_category->sub_cat_name }} > {{ $subsubcategory->sub_sub_cat_name }} 

エラー

未定義のプロパティです:stdClassの:: $ sub_category

答えて

2

実際にあなたはほとんどそこにいます。ビューからsub_categoryを削除するだけで動作します。

{{ $subsubcategory->sub_cat_name }} > {{ $subsubcategory->sub_sub_cat_name }} 

あなたの配列が現在であるため、これが起こるのであるが

object(stdClass) { 
    ["id"]=> int(1) 
    ["table2_id"]=> int(1) 
    ["table1_id"]=> int(1) 

    ... 
    // all other columns 
} 

のように見えるので、実際に彼らがsubsubcategory $に属していないと、ビューでsub_categorycategoryを持参する必要はありません。 $subsubcategoryに表示するだけです。

2
$subsubcategories = DB::table('category') 
      ->join('category', 'category.id', '=', 'sub_category.table1_id') 
      ->join('sub_category', 'sub_category.id', '=', 'sub_sub_category.table2_id') 
      ->select('category.*', 'sub_category.*', 'sub_sub_category.*') 
      ->get(); 
関連する問題