[英]Building query to select from 3 tables in Laravel
通常我知道如何查询和连接三个表,但在这里我无法弄清楚如何发生。 问题是我遵循了3个表格:
category - > columns
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
被添加到名为city
Sub-Sub-Category
。 列出图像时,我想显示
images1
添加到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
$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();
其实你几乎就在那里。 只需从视图中删除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
显示它们$subsubcategory
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.