繁体   English   中英

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

[英]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

因此,图像只能添加到CategoryCategory->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_categorycategory 只需在$subsubcategory显示它们$subsubcategory

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM