laravel 5.2中一列上有2个外键
Posted
技术标签:
【中文标题】laravel 5.2中一列上有2个外键【英文标题】:2 foreign keys on one column in laravel 5.2 【发布时间】:2017-01-13 21:55:12 【问题描述】:这是我的数据库架构
我有这些模型:
管理员 用户 下注 匹配 团队我很困惑如何在模型中定义 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();
谢谢
【问题讨论】:
【参考方案1】:应该是这样的:
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);
【讨论】:
不起作用...,我这样做了return dd($team->matches()->where('id' ,'=', 1)->get());
,这是错误找不到基表或视图:1146 表'football_bet.match_team'不存在
刚刚编辑过..你能再验证一下吗? dd($team->matches()->find(1))
【参考方案2】:
您可以指定每个关系的目标列:
public function team1()
return $this->belongsTo('\App\Match', 'team1_id');
public function team2()
return $this->belongsTo('\App\Match', 'team2_id');
如果这有帮助,请告诉我。
【讨论】:
【参考方案3】:应该是这样的。试试看吧。
Match.php
public function team1()
return $this->belongsTo('App\Team', 'team1_id');
public function team2()
return $this->belongsTo('App\Team', 'team2_id');
团队.php
public function matches1()
return $this->hasMany('App\Match', 'team1_id', 'id');
public function matches2()
return $this->hasMany('App\Match', 'team2_id', 'id');
【讨论】:
工作没问题,谢谢,但我如何才能访问球队参加的所有比赛?不管是一队还是二队,都是唯一的加入数组结果的方法吗? 与()一起使用。例如:Team::with('matches1', 'matches2')。要了解更多信息,请查看***.com/questions/30231862/…以上是关于laravel 5.2中一列上有2个外键的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Eloquent 用于数据透视表,一个表有 2 个外键,另一个表有 1 个外键