【问题标题】:laravel fetch data from table with to foreign keys to the same tablelaravel 从表中获取数据到同一张表的外键
【发布时间】:2016-10-07 20:07:42
【问题描述】:

我有两张桌子: 具有 id、group_id 和 name 的团队 带有 id、home_team_id、away_team_id、日期和比分的比赛

正如您在我的游戏表中看到的,有两个外键(home_team_id 和 away_team_id)指向同一个表(teams)。 我如何用 laravel eloquent 映射这些关系? 我试过了,但失败了:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Team extends Model
{
    public function group(){
        return $this->belongsTo('App\Group');
    }

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

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Game extends Model
{
    public function homeTeam(){
        $this->belongsTo('App\Team', 'home_team_id');
    }

    public function awayTeam(){
        $this->belongsTo('App\Team', 'away_team_id');
    }

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

在我看来,我想调用 home_team->name 和 away_team->name:

<td>{{ $game->homeTeam->name }}</td>
<td>{{ $game->awayTeam->name }}</td>

我收到此错误: 关系方法必须返回 Illuminate\Database\Eloquent\Relations\Relation 类型的对象

Relationship 方法必须返回 Illuminate\Database\Eloquent\Relations\Relation 类型的对象(查看:/home/vagrant/Code/em/resources/views/schedule/index.blade.php)

【问题讨论】:

    标签: javascript mysql laravel-5 eloquent


    【解决方案1】:

    您需要从方法中返回关系。例如:

    return $this->belongsTo('App\Team', 'home_team_id');
    

    您在团队模型中这样做,而不是在游戏模型中。

    【讨论】:

    • 也就是说,如果没有return $someval,则返回值为null,也就是说父调用实际上是$game-&gt;null-&gt;whatever
    • 好吧,那真是太愚蠢了。很抱歉浪费您的时间.. 显然这是错误的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多