2 внешних ключа на одном столбце в laravel 5.2

вот моя схема базы данных

введите описание изображения здесь

и у меня есть эти модели:

  • Администратор
  • пользователь
  • Ставка
  • Матч
  • команда

Я запутался, как определить отношения между matches а также teams в моделях

вот что я делал до сих пор …

User.php

public function bets()
{
return $this->hasMany('\App\Bet');
}

Bet.php

public function user()
{
return $this->belongsTo('\App\User');
}

public function match()
{
return $this->belongsTo('\App\Match');
}

Match.php

public function bets()
{
return $this->hasMany('\App\Bet');
}

//?????????????

Team.php

//?????????????

на самом деле то, что мне нужно, это код, который должен быть размещен вместо //???... в обоих Team.php а также Match.php так что я могу легко делать такие вещи …

$team->matches();
$match->team1();
$match->team2();

Спасибо

0

Решение

Это должно быть что-то вроде этого:

Match.php

public function team1()
{
return $this->belongsTo('\App\Team', 'team1_id');
}

public function team2()
{
return $this->belongsTo('\App\Team', 'team2_id');
}

Team.php

public function matches()
{
return $this->hasMany('\App\Match', 'team1_id')
->orWhere('team2_id', $this->id);
}
2

Другие решения

Вы можете указать, какой столбец должен быть предназначен для каждого отношения:

public function team1() {
return $this->belongsTo('\App\Match', 'team1_id');
}
public function team2() {
return $this->belongsTo('\App\Match', 'team2_id');
}

Позвольте мне знать, если это помогает.

0

Это было бы что-то вроде этого. Попробуйте.

  1. Match.php

    public function team1(){
    return $this->belongsTo('App\Team', 'team1_id');
    }
    
    public function team2(){
    return $this->belongsTo('App\Team', 'team2_id');
    }
    
  2. Team.php

    public function matches1(){
    return $this->hasMany('App\Match', 'team1_id', 'id');
    }
    
    public function matches2(){
    return $this->hasMany('App\Match', 'team2_id', 'id');
    }
    
0