2016-03-23 15 views
0

So habe ich die folgende match Tabelle, die die Nummern der Teams enthält, die an diesem Spiel teilgenommen haben. Ich möchte eine Beziehung mit dem teams einzurichten, die etwa wie folgt aussieht:Eloquente Beziehungen mit mehreren Spalten

Teams Tabelle

| id | number | name | etc | 
| 1 | 1234 | Example | etc | 
| 2 | 2345 | Example | etc | 

etc... 

Spiele Tabelle

| id | match | red1 | red2 | blue1 | blue2 | 
| 1 | 1 | 1234 | 1710 | 673 | 2643 | 
| 2 | 2 | 2345 | 1677 | 4366 | 246 | 

etc... 

ich so etwas wie $this->match->where("match", "=", "2")->first()->teams(); haben wollen.

Ich habe versucht mit hasMany(), aber ich kann nicht scheinen, die red1, red2, blue1, blue3 Spalten zu verwenden.

Was ich versucht habe:

class Matches extends Model 
{ 
    protected $table = "match_table"; 

    protected $fillable = [ 
     "match_id", 
     "time", 
     "bluescore", 
     "redscore", 
     "red1", 
     "red2", 
     "red3", 
     "blue1", 
     "blue2", 
     "blue3", 
    ]; 

    public function teams() 
    { 
     return $this->hasMany("App\Models\Teams", "number", ["red1", "red2", "blue1", "blue2"]); 
    } 
} 

Antwort

0

Was ich am Ende tun war gerade durch jede Säule Looping ich wollte, und dann einfach einen neuen Collection mit den Ergebnissen in sie zurückkehrt.

public function teams() 
{ 
    $result = []; 

    foreach($this::$teamColumns as $column) { 
     $result[] = $this->hasMany("App\Models\Teams", "number", $column)->first(); 
    } 

    return new Collection($result); 
} 
Verwandte Themen