为 foreach() 提供的参数无效 Laravel 5.5
Invalid argument supplied for foreach() Laravel 5.5
我有两个 table,用户和帖子 table link 在 Laravel 5.5 中使用一对多关系。我只想显示与登录用户关联的帖子。
我有 PostController,我可以在其中获取当前用户登录信息并将其传递给视图 index.php。在 index.php 视图中,我尝试使用@foreach 获取并循环与登录用户关联的帖子。
请参阅下面我的示例代码。
后控制器
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> <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');
}
我遇到错误
Invalid argument supplied for foreach()
问题出在哪里?
用户模型将方法定义为 post()
,但在 foreach 中您将其称为 ->posts
(复数)。尝试 @foreach ($currentuser->post()->get() as $post)
$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)
{
}
我有两个 table,用户和帖子 table link 在 Laravel 5.5 中使用一对多关系。我只想显示与登录用户关联的帖子。
我有 PostController,我可以在其中获取当前用户登录信息并将其传递给视图 index.php。在 index.php 视图中,我尝试使用@foreach 获取并循环与登录用户关联的帖子。
请参阅下面我的示例代码。
后控制器
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> <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');
}
我遇到错误
Invalid argument supplied for foreach()
问题出在哪里?
用户模型将方法定义为 post()
,但在 foreach 中您将其称为 ->posts
(复数)。尝试 @foreach ($currentuser->post()->get() as $post)
$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)
{
}