Нет записей в базе данных при итерации массива из базы данных Laravel - PullRequest
0 голосов
/ 08 апреля 2019
protected function show()
{
    $users = User::all();
    $letters = Letter::with('user');
     $userLetter = $letters->where(['user_id' => 2])->count();
     //Here function work right. Shows that we have 10 users
    foreach ($users as $user) {
        $userLetter = $letters->where(['user_id' => $user->id])->first();
        if($userLetter){
            //Here it shows that only the first user exists, returns null for the rest users.
        }
    }
}

Мы получаем ошибку, когда сортируем массив с помощью foreach.В базе данных не найдено ни одной записи, кроме первой.Для других записей верните ноль.снаружи foreach без ошибок.

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

Вам, вероятно, было бы лучше использовать буквенное отношение на User.

На модели User вы могли бы сделать что-то вроде:

public function letter()
{
    return $this->hasOne(Letter::class, 'user_id');
}

Тогда вы могли бы вконтроллер:

protected function show()
{
    $users = User::with('letter')->get();
    foreach ($users as $user) {
        if ($user->letter) {
            // do things
        }
    }
}
0 голосов
/ 08 апреля 2019

Просто переместите ваш объект внутри цикла, как показано ниже.

    protected function show()
    {
        $users = User::all();
         $userLetter = $letters->where(['user_id' => 2])->count();
         //Here function work right. Shows that we have 10 users
        foreach ($users as $user) {
            $userLetter = Letter::with('user')->where(['user_id' => $user->id])->first();
            if($userLetter){

            }
        }
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...