构建查询以从Laravel中的3个表中进行选择

时间:2017-04-25 08:19:16

标签: php laravel laravel-4

通常我知道如何查询和加入三个表,但在这里我无法弄清楚如何发生。问题是我遵循了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();

示例:

我有主要类别(Country),其子类别(district)具有子子类别(city)。

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 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

其实你几乎就在那里。只需从视图中删除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中显示它们即可。