首页 > 解决方案 > 如何通过多对多关系获得不同的记录

问题描述

我有以下数据透视表。

+----+------------+------------+
| 编号 | 表A_id | 表B_id |
+----+------------+------------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 2 | 1 |
| 5 | 2 | 4 |
+----+------------+------------+

控制器:

$tableAs = \App\TableA::all();

模型中已经定义了多对多关系,下面是视图代码。

@foreach ($tableAs as $tableA)
@foreach ($tableA->$tableBs as $tableB)
<p>{{ $tableA->id . ' - ' . $tableB->id }}</p>
@endforeach
@endforeach

现在,我想为表 B 获取不同的行。
如果在表上方,则当前输出为:

1 - 1
1 - 2
1 - 3
2 - 1 // <- not expect
2 - 4

在视图文件中不写逻辑的情况下实现我的希望的最佳实践是什么?

标签: phplaravellaravel-5

解决方案


你能试试这个代码吗

$tableAs = \App\TableA::distinct('tableB_id')->all();


推荐阅读