Недопустимый аргумент для foreach () Laravel 5.5 - PullRequest
0 голосов
/ 19 мая 2019

У меня есть две таблицы, пользователи и таблица сообщений, которые связаны друг с другом в Laravel 5.5. Я хочу показать только сообщения, связанные с логином.

У меня есть PostController, где я получаю логин текущего пользователя и передаю его в view index.php. В представлении index.php я пытаюсь получить и зациклить сообщения, связанные с пользователем входа в систему, используя @foreach.

См. Ниже мои примеры кодов.

PostController

public function index()
{
    $currentuser = Auth::user();
    return view('posts.index')->withCurrentuser($currentuser);
}

index.php view

@foreach ($currentuser->posts as $post)
        <tr>
            <td>{{ $post->id }}</td>
            <td>{{ $post->title }}</td>
            <td>{{ substr(strip_tags($post->body), 0, 40) }}{{ strlen(strip_tags($post->body))>40 ? "..." : "" }}</td>
            <td>{{ date('M j, Y', strtotime($post->created_at)) }}</td>
            <td><a href="{{ route('posts.show', $post->id) }}" class="btn btn-outline-blue btn-sm">View</a>&nbsp;<a href="{{ route('posts.edit', $post->id)}}" class="btn btn-sm btn-outline-blue">Edit</a></td>

        </tr>

    @endforeach

User.php Модель

 protected $table = 'users';
    public function post(){
        return $this->hasMany('App\Post');
    }

Post.php Модель

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

Я получаю сообщение об ошибке

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

Где может быть проблема?

Ответы [ 2 ]

0 голосов
/ 23 мая 2019
$currentuser->posts in Foreach 
you used $currentuser->posts
but "posts" is method in you model (user.php).
so use it as method.
Or use temp variable for foreach like..
$posts = $currentuser->posts();
foreach($post as $key=> $val)
{
}
0 голосов
/ 19 мая 2019

Модель пользователя определяет метод как post(), но в foreach вы называете его ->posts (множественное число).Попробуйте @foreach ($currentuser->post()->get() as $post)

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