указан неверный аргумент для отношения foreach () laravel - PullRequest
1 голос
/ 10 апреля 2020

Я пытаюсь показать комментарии книги по ISBN (PK таблицы книги) и получаю следующую ошибку:

В foreach указан неверный аргумент

I Я использую Laravel отношение и foreach для получения записей из следующего запроса в классе Helper:

function getCommentsByISBN($data)
{    
    foreach (Book::where("ISBN", $data)->get() as $comments) {
        return $comments->comments;
    }
}

А вот моя модель Book, отношение комментария:

public function comments()
{
    return $this->hasMany(Comment::class, "ISBN", "ISBN");
}

А вот вид, где я показываю комментарии:

@foreach(getCommentsByISBN(session("isbn")) as $comment)
    <div class="form-group">
        <h3>
            {{ getUserWhoPostedComment($comment->email) }}
        </h3>
        <p>
            {{ $comment->commentary }}
        </p>
        @if(Session::has("username") && isAdmin(session("username")))
            <button type="button" onclick="openModal('{{$comment->commentary}}')"
            name="warningButton" class="btn btn-warning" data-toggle="modal"
            data-target="#modalWarning">
                <i class="fas fa-exclamation-circle"></i>
            </button>
        @endif
        <hr>
        <span>
            Hace: {{ getTimeWherePostedComment($comment->publicated_at) }}
        </span>
    </div>
@endforeach

Заранее спасибо!

1 Ответ

1 голос
/ 10 апреля 2020

Я думаю, что ваш помощник возвращает void , потому что с этим номером ISBN не найдено ни одной книги.

Я думаю, что это должно выглядеть следующим образом:

function getCommentsByISBN($isbn)
{
    if ($book = Book::where("ISBN", $isbn)->first()) {
        return $book->comments;
    }
}

и в вашем лезвие должно быть похоже на

@php
     $comments = getCommentsByISBN(session("isbn")) ?: [];
@endphp
@foreach($comments as $comment)
   <div class="form-group">
   /// Rest of the code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...