Laravel:检查模型是否具有相同的关系

问题描述 投票:0回答:1

我有模型:

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 何时相同。

php laravel eloquent model relationship
1个回答
0
投票

我找到了一种方法,但我不知道这是否是正确或最好的方法。 在 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");
        }
    }

如果有人找到更好的方法或知道哪些是具有重复关系的方法,请告诉我

© www.soinside.com 2019 - 2024. All rights reserved.