为什么这种雄辩的关系在foreach循环中返回null?

时间:2019-02-10 03:11:25

标签: laravel eloquent

我的一段感情很奇怪。如果我得到结果和dd(),则它具有正确的数据。但是,如果我通过foreach循环运行该集合,就好像该关系消失了。

users表具有一个名为referred_by的字段,该字段存储推荐用户的人的用户ID。在我的实例中,我正在寻找ID为3的用户所推荐的所有新用户。

这是User.php

中的关系
public function referrer()
{
    return $this->belongsTo(User::class, 'referred_by');
}

这是返回时髦结果的代码

$users = User::where('referred_by', 3)
    ->with('referrer')
    ->get();

// doing dd() here returns a collection with full referrer relationship;
// the returned data is as expected

dd($users);

foreach($users as $user)
{
    // dd($user) here returns the relationship, as it should

    // dd($user->referrer) here returns null, like the relationship doesn't exist
}

2 个答案:

答案 0 :(得分:0)

尝试

foreach($users as $user)
{
    // dd($user) here returns the relationship, as it should

    dd($user['referrer'])
}

然后

 // dd($user->referrer)

答案 1 :(得分:0)

结果证明,在users表上有一个名为referrer的数据库列,这引起了问题。我将关系的方法名称从referrer()更改为referredBy(),并成功了。 *眼球*