通常我知道如何查询和加入三个表,但在这里我无法弄清楚如何发生。问题是我遵循了3个表:
类别 - >列
id
name
image
子类别 - >列
id
table1_id
name
image
子子类别 - >列
id
table2_id
name
image
因此,图片只能添加到Category
或Category->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
答案 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_category
和category
。只需在$subsubcategory
中显示它们即可。