多列的雄辩关系

时间:2016-03-23 00:42:48

标签: php orm eloquent relational-database

所以我有以下match表,其中包含参与该匹配的团队数量。我想与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...

我希望有类似$this->match->where("match", "=", "2")->first()->teams();的内容。

我尝试过使用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"]);
    }
}

1 个答案:

答案 0 :(得分:0)

我最终做的只是遍历我想要的每一列,然后只返回一个新的Collection并将结果输入其中。

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

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

    return new Collection($result);
}