2017-04-25 81 views
1

通常我知道如何查詢和連接三個表,但在這裏我無法想象它將如何發生。事情是,我跟了3個表:構建查詢以從Laravel的3個表中選擇

類別 - >列

id 
name 
image 

子類 - >列

id 
table1_id 
name 
image 

子子類 - >列

id 
table2_id 
name 
image 

所以圖像只能添加到CategoryCategory->Sub-Category或第三級Category->Sub-Category->Sub-Sub-Category

我想要做的是當我在頁面上顯示所有圖像以顯示它們添加到哪個類別。

我已經在我的模型中做了所有關係,但我無法弄清楚如何精確查詢。目前,只有查詢所有相似圖片

SubSubCategories::all(); 

例子:

我有有子類(district),其中有子子類(city)主類(Country)。

image1被添加到Sub-Sub-Category名稱city。當圖像列出時,我想顯示

images1添加到Country->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();