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

时间:2017-09-18 20:28:02

标签: laravel model eloquent relationship

我有模型:rowPartidoCoalicion关系中相关。 我需要知道两个或多个many to many何时有相同的Coalicion

希望我已经解释过了自己。

编辑1: 型号:

Partido

让我们说用户从选择输入中选择了一些元素,然后我将它们抓取到数组中并将它们发送给控制器。

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的第0项和第二个Collection的第2项是否相同。

1 个答案:

答案 0 :(得分: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");
        }
    }

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