2016-03-23 87 views
0

所以我有以下match表,其中包含参加比赛的球队的数量。我想建立与teams它看起来像这样的关系:我想有像$this->match->where("match", "=", "2")->first()->teams();与多列的雄辩关系

队表

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

etc... 

匹配表

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

etc... 

我试过使用hasMany(),但我似乎无法使用red1, red2, blue1, blue3列。

我曾尝试:

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

回答

0

我最终什么事做的只是通过我想,然后就返回一个新Collection在它的结果的每一列循环。

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

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

    return new Collection($result); 
}