我有模型:
Partido
和 Coalicion
存在 many to many
关系。
我需要知道两个或多个 Coalicion
何时具有相同的 Partido
相关性。
希望我已经解释清楚了。
编辑1: 型号:
class Coalicion extends Model
{
public function partidos()
{
return $this->belongsToMany(Partido::class);
}
}
假设用户从选择输入中选择了一些元素,我将它们放入数组中并将它们发送到控制器。
...
public function example(Request $request)
{
$coaliciones = $request->coaliciones;
foreach ($coaliciones as $c) {
$coalicion = Coalicion::find($c);
# Here we have a list of Coalicion model in a loop
# Let's say the first iteration I can see the relationship
dump($c->partidos);
}
}
例如,在浏览器上给我以下答案:
Collection {#1 ▼
#items: array:2 [▼
0 => Partido {#271 ▶} #This is Partido with id 1
1 => Partido {#268 ▶}
]
}
Collection {#2 ▼
#items: array:3 [▼
0 => Partido {#279 ▶}
1 => Partido {#280 ▶}
2 => Partido {#283 ▶} #This is Partido with id 1
]
}
我需要知道第一个 Collection 的 item 0 和第二个 Collection 的 item 2 何时相同。
我找到了一种方法,但我不知道这是否是正确或最好的方法。 在 Coalicion 模型中,我添加以下内容
function
:
public function partidosId()
{
return $this->partidos->pluck('id');
}
有了这个,我只能从关系中获取
id
,然后在controller
中,我创建了一个空的array()
,并用id
循环填充我所有的foreach
,然后,完成我评估了现在填充的id
中的array
是否是唯一的,如果唯一值小于数组的长度,那么某些模型具有相同的关系(我不知道哪个,但这是一个开始),例如:
public function example(Request $request)
{
$coaliciones = $request->coaliciones;
$allItems = [];
foreach ($coaliciones as $c) {
$coalicion = Coalicion::find($c);
$allItems = array_merge($allItems, $coalicion->partidosId()->toArray());
}
if (count(array_unique($allItems))<count($allItems)) {
dd("Duplicates");
}else{
dd("Uniques");
}
}
如果有人找到更好的方法或知道哪些是具有重复关系的方法,请告诉我