Laravel - Project-Flyer:为用户添加第二张传单后 属性 非对象

Laravel - Project-Flyer: property of non-object after adding second flyer for user

一直在关注 laracasts 上的项目传单系列,但在为单个用户创建第二个传单时似乎遇到了问题。

我可以创建一个传单,然后通过写

显示创建传单的用户的信息
{{ $flyer->owner->name }}

这在我与该用户创建的第一个传单上显示正常。

但是,如果我随后尝试使用同一用户创建第二张传单,则会出现此错误:

Trying to get property of non-object...

dd() 在第二张传单的 $flyer->owner 上抛出这个:

null

但在第一个传单上抛出了这个: array of user information

看来我的人际关系出了问题?但是它第一次运行良好似乎很奇怪,但是向单个帐户添加第二个传单会导致此错误。

我可以创建多个帐户,每个帐户都有一张传单,而且效果很好,但是一旦我向一个帐户添加第二张传单,它就会搞砸。

我不确定我是否遗漏了视频中的任何内容,但到目前为止,没有一个视频处于为每个帐户创建多个传单的情况。

我已经解决了这个问题,请看下面我自己的答案。

查看有关关系的文档docs

我相信(对此不太确定)它第一次起作用的原因是您正在使用此静态调用创建某种 singleton

所以,我自己解决了这个问题。

在我的传单模型中,我错误地引用了外键。我一直在寻找 'id',但我应该一直在寻找 'user_id'。

所以传单模型的正确代码应该是:

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

我通过搜索 github 项目传单的克隆来查看我是否可以看到我的代码有什么不同,从而发现了这一点。结果证明这只是这个简单的修复。