Laravel关系 - 静态Vs非静态的不同结果

时间:2016-12-11 15:13:19

标签: laravel-5 static relation non-static

我遇到了Laravel的一个问题,在我的一生中我无法解决这个问题。

我有以下型号,基本上是:

class Team extends Model
{
    public function notices()
    {
        return $this->belongsToMany('App\Notice', 'notice_recipients');
    }
}

class Notice extends Model
{
    public function teams()
    {
        return $this->belongsToMany('App\Team', 'notice_recipients');
    }
}

我遇到了Team模型的问题:

dump($this->notices);

将不同的结果返回到:

dump(Team::find($this->id)->notices);

为了进一步调查,我有以下代码:

    dump($this->id); // = 20
    dump($this->notices()->toSql());
    dump($this->notices()->getBindings());
    dump($this->notices);
    dump(Team::find($this->id)->notices()->toSql());
    dump(Team::find($this->id)->notices()->getBindings());
    dump(Team::find($this->id)->notices);

2-3行输出完全相同,据我所知为5-6行,所以我应该得到相同的结果,但是第4行和第7行输出不同的结果! (第4行似乎只输出第7行输出的结果选择。)

这个问题似乎只发生在某些团队模型上,而且在任何特定模型上是否出现问题似乎都是随机的。

有关可能发生的事情或如何进一步调试此问题的任何想法?

非常感谢

1 个答案:

答案 0 :(得分:0)

notice_recipients表,如果包含以下字段

id team_id notice_id

尝试这个也许会起作用

    public function notices()
    {
        return $this->belongsToMany('App\Notice', 'notice_recipients', 'team_id', notice_id);
    }

public function teams()
    {
        return $this->belongsToMany('App\Team', 'notice_recipients', 'notice_id', 'team_id');
    }