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 【问题描述】:

这是我的数据库架构

我有这些模型:

管理员 用户 下注 匹配 团队

我很困惑如何在模型中定义 matchesteams 之间的关系 这是我到现在为止所做的......

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.phpMatch.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 个外键

Laravel 1 个外键,2 个表 Eloquent ORM

Laravel中带有2个外键的搜索栏

使用条件删除数据框中一列上的重复值[重复]

Laravel 5.2 删除外键

在 laravel 5.2 中找不到类“Html”