【问题标题】:Eloquent Relations With Multiple Columns多列的雄辩关系
【发布时间】:2016-03-23 00:42:47
【问题描述】:

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

【问题讨论】:

    标签: php orm eloquent relational-database


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-10-16
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 2017-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多