所以我有以下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"]);
}
}
答案 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);
}