【发布时间】:2019-11-19 22:15:38
【问题描述】:
我有以下数据透视表。
+----+------------+-----------+ |编号 |表A_id | tableB_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
在视图文件中不写逻辑的情况下实现我的希望的最佳实践是什么?
【问题讨论】:
-
是否因为
1-2已经存在而无法预期2-1?您可以事先确保那些“意外”关系不会保存在数据库中 -
最好的方法就像@kerbholz 说的那样,您不需要在数据透视表中保存相同的记录。除非您有另一个列,并且该列是不同的消息。但是,如果该列存在,则需要将其放入 tableA 或 tableB 中。
-
我是@kerbholz 的第三个建议,但如果必须,请查看这篇文章以获取想法:stackoverflow.com/questions/55633472/…
-
是的。但在其他情况下,需要同时获取
1-2和2-1,因此两条记录都需要保存。顺便说一句,数据透视表中还有其他列。 @kerbholz