我有一个带有两个外键的透视表,我想根据一个外键列出项目。
id | tool_id | user_id
______________________
1 2 12
2 5 12
3 3 12
4 4 7
我有表之间的关系,我想按用户列出工具,如下所示:
No: User Tools
--- ---- -----
1 John 2,3,5
2 Sara 4
我循环了记录,但您可以猜到它的列表为:
No: User Tools
--- ---- -----
1 John 2
2 John 3
3 John 5
4 Sara 4
----or----
No: User Tools
--- ---- -----
1 John 2,3,5
2 John 2,3,5
3 John 2,3,5
4 Sara 4
我怎样才能把它们列出来呢?
No: User Tools
--- ---- -----
1 John 2,3,5
2 Sara 4
这是迄今为止尝试过的:$assign
从透视表中获取所有数据,架构位于post的顶部。
<table class="table mb-0">
<thead>
<tr>
<th scope="col">Tool</th>
<th scope="col">Employee</th>
<th scope="col">Department</th>
</tr>
</thead>
<tbody>
@foreach($assigns as $assign)
<tr>
<td>{{$assign->employee->last_name." ".$assign->employee->first_name}}</td>
<td>{{$assign->employee->department->name}}</td>
<td>
@foreach($assigns->where('employee_id', $assign->employee_id) as $tool)
{{$tool->tool->tool_code}}
@endforeach
</td>
</tr>
@endforeach
</tbody>
</table>
- 控制器:**
public function assignLetter(){
$assigns = ToolAssign::all();
$employees = Employee::where('status', 1)->where('is_inspector', 1)->orderBy('last_name')->get();
return view('tool.assign', compact('assigns', 'employees'));
}
- 透视表的模型**
public function employee()
{
return $this->belongsTo(Employee::class, "employee_id", "id");
}
public function tool()
{
return $this->belongsTo(Tool::class, "tool_id", "id");
}
2条答案
按热度按时间0md85ypi1#
我认为你应该把你的关系类型从
belongsTo
改为belongsToMany
,就像这样:这样,您可以执行以下操作:(未测试)
编辑:
这里是一个例子,让你的代码达到你想要的,但它真的很混乱。我建议你尝试我的代码以上修复它。
sdnqo3pr2#
我解决了困难的方式。它不愚蠢,如果它的工作:)