2017-09-18 3 views
0

Ich habe Modelle: Partido und Coalicion in einer many to many Beziehung verwandt. Ich muss wissen, wenn zwei oder mehr Coalicion hat die gleiche Partido bezogen.Laravel: Überprüfen, ob Modelle die gleiche Relation haben

Ich hoffe, ich habe mich selbst erklärt.

Edit 1: Modell:

class Coalicion extends Model 
{ 
    public function partidos() 
    { 
     return $this->belongsToMany(Partido::class); 
    } 
} 

Lassen Sie uns sagen Benutzer einige Elemente von einem Auswahleingang ausgewählt und ich packte sie in einem Array und sie an den Controller senden.

... 
    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); 
      } 
     } 

Dies zum Beispiel geben Sie mir folgende Antwort an den Browser:

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 
    ] 
} 

ich wissen muss, wenn das Element 0 der ersten Erhebung und der Artikel 2 der zweiten Sammlung gleich sind.

+0

senden und Ihr Modell Code hier einfügen ... –

+0

Erledigt ist ein Laravel/Beredte spezifische Frage –

Antwort

0

Ich habe irgendwie einen Weg gefunden, aber ich weiß nicht, ob es der richtige oder beste Ansatz ist. In Coalición Modell der folgenden function ich hinzufügen: Diese

public function partidosId() 
    { 
     return $this->partidos->pluck('id'); 
    } 

Mit kann ich nur die id ‚s aus den Beziehungen, dann in der controller bekomme ich erstellt eine leere array() und füllen Sie es mit all meinen id s mit einem foreach Schleife, dann, Finishing Ich bewerte, wenn die id 's in der jetzt array sind einzigartig, wenn die eindeutigen Werte sind kleiner als die Länge des Arrays dann haben einige Modelle die gleiche Beziehung (ich weiß nicht, aber es ist ein Anfang), zB:

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"); 
     } 
    } 

Wenn jemand einen besseren Weg, oder einen Weg zu kennen, die die, die mit der doppelten Beziehung finden Sie mich bitte ... ein Beispiel weiß

Verwandte Themen