【发布时间】:2021-07-19 10:16:15
【问题描述】:
我的数据库中有一些表,我正在尝试在它们之间进行交易。我的目标是在我的项目页面上以卡片的形式显示项目名称和该项目中的员工,如下图所示。 (除了我提到的方法,如果有更好的方法,请大家分享。)
当尝试这样做时,我首先想到的是使用 leftJoin。与这些项目一起,我想到了将那个项目中的用户拉到一起,并使用嵌套的 foreach 来展示他们。 如果我只是想拍摄项目,没有问题,前 4 个项目来了,一切正常。但是由于我需要吸引该项目中的用户以及我的项目,所以当我使用 leftJoin 时,我得到了如下所示的输出。我不得不使用分页,因为我需要每页显示 4 个项目,而当我使用分页时,输入的行不一致。在等待 4 个项目和他们的员工到达时,前 4 行来了。 (一个项目的3名员工和另一个项目的第一名员工到了。)
我的代码:
$query = Project::query();
$query->select('prj_name', 'us_name');
$query->where('up_type_id', 3);
$query->leftJoin('user_positions', 'projects.prj_id', '=', 'user_positions.up_source_id');
$query->leftJoin('users', 'user_positions.up_user_id', '=', 'users.us_id');
$data['projectList'] = $query->paginate(4)->toArray();
return view('pages.projects.index', $data);
输出:
[data] => Array
(
[0] => Array
(
[prj_name] => Project Name - 2
[us_name] => Tracey Dyer
)
[1] => Array
(
[prj_name] => Project Name - 2
[us_name] => Joseph Dickens
)
[2] => Array
(
[prj_name] => Project Name - 2
[us_name] => Steven Ogden
)
[3] => Array
(
[prj_name] => Project Name - 3
[us_name] => Warren Nash
)
)
我的桌子:
其他信息: 它与我的问题没有直接关系,但我想说明它以供参考。我的名为“user_position_types”的表代表公司内的字段。 “user_positions”表中的“up_type_id”列指定了分区类型(如Department、Project)。 如果该列为1,则表示部门,“source_id”表示是哪个部门。如果是3,则表示项目,“source_id”再次表示它是哪个项目。
我要感谢所有提前回答的人。
【问题讨论】:
标签: php mysql laravel join relational-database