2017-04-25 38 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();