Почему это отношение Eloquent возвращает нуль в цикле foreach? - PullRequest
0 голосов
/ 10 февраля 2019

У меня отношения, которые ведут себя странно.Если я получу результаты и dd(), у него будут правильные данные.Однако, если я запускаю коллекцию через цикл foreach, это как будто связь исчезает.

В таблице users есть поле с именем referred_by, в котором хранится идентификатор пользователя, который направил пользователя,В моем случае я ищу всех новых пользователей, которые были переданы пользователем с идентификатором 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 голосов
/ 10 февраля 2019

Оказывается, у меня был столбец базы данных в таблице users с именем referrer, который вызывал проблему.Я изменил имя метода отношения с referrer() на referredBy(), и это сработало.* Eyeroll *

0 голосов
/ 10 февраля 2019

Попробуйте с

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

    dd($user['referrer'])
}

Вместо

 // dd($user->referrer)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...