为foreach()Laravel 5.5提供了无效的参数

时间:2019-05-19 10:09:42

标签: php laravel-5.5

我在Laravel 5.5中使用一对多关系将两个表,用户表和帖子表链接在一起。我只想显示与登录用户关联的帖子。

我有PostController,在这里我可以获取当前的用户登录名并将其传递给视图index.php。在index.php视图中,我试图使用@foreach获取和循环与登录用户关联的帖子。

请参阅下面的示例代码。

PostController

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

index.php视图

@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 :(得分:0)

用户模型将方法定义为post(),但是在foreach中,您将其称为->posts(复数)。尝试@foreach ($currentuser->post()->get() as $post)

答案 1 :(得分:0)

$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)
{
}