假设我有一个用于存储我网站上所有菜单的表,包括下拉选项中的选项,如下表所示。我希望从后端管理员轻松管理菜单。
注意:我正在缓存所有菜单以避免命中数据库。
Table 1: tbl_menus
id name slug type
------------------------------------------------------------------------------------
1 Accounting / Audit / Tax accounting-audit-tax industry
2 Administration & Office Support administration-office-support industry
3 Construction construction industry
4 Male male sex
5 Female female sex
6 Full Time full-time job-type
7 Contract contract job-type
8 Interim interim job-type
表2:tbl_jobs
id title job_type_menu_id job_industry_menu_id
---------------------------------------------------------------------------------------------
1 System Administrator 6 1
2 Solaris Admin 6 3
3 IT Support Engeer 7 1
我想要的: 我试图通过使用下面的查询将tbl_menus表连接到tbl_jobs表,以便访问菜单单元格,如tbl_menus.name,tbl_menus.slug,tbl_menus.type
DB::table('tbl_menus')
->join('tbl_menus', 'tbl_jobs.job_type_menu_id', '=', 'tbl_menus.id')
->join('tbl_menus', 'tbl_jobs.job_industry_menu_id', '=', 'tbl_menus.id')
->select('tbl_jobs.id', 'tbl_jobs.title', 'tbl_menus.name', 'tbl_menus.slug');
我已经尝试过这个查询,并且没有任何结果。
我相信你对我希望实现的目标有了更清晰的了解。您的专家解决方案将不胜感激。
注意:我需要选择这个菜单或加入工作的原因是让我做这样的事情:
@foreach($jobs as $job)
{{$job->job_type->name}} prints name instead of printing just ID
{{$job->industry->name}}
@endforeach
答案 0 :(得分:0)
您似乎正在尝试加入与您正在使用的表相同的表格。
DB::table('tbl_menus')
->join('tbl_menus', 'tbl_jobs.job_type_menu_id', '=', 'tbl_menus.id')
->join('tbl_menus', 'tbl_jobs.job_industry_menu_id', '=', 'tbl_menus.id')
->select('tbl_jobs.id', 'tbl_jobs.title', 'tbl_menus.name', 'tbl_menus.slug');
试试这个
DB::table('tbl_menus')
->join('tbl_jobs', 'tbl_jobs.job_type_menu_id', '=', 'tbl_menus.id')
->join('tbl_jobs', 'tbl_jobs.job_industry_menu_id', '=', 'tbl_menus.id')
->select('tbl_jobs.id', 'tbl_jobs.title', 'tbl_menus.name', 'tbl_menus.slug');