4 回答
TA贡献1804条经验 获得超2个赞
在控制器中 get() 将返回集合,您想要一个用户,因此使用 find() 或 first(),它将返回一个用户对象
public function index($id){
$user=User::find($id); //or $user=User::where('id',$id)->first();
return view('user',compact('user'));
}
关系法
public function posts()
{
return $this->hasMany('App\Post','user_id','id');
}
由于用户和帖子之间是一对多的关系,因此您必须使用循环来显示用户的帖子
foreach($user->posts as $post)
<div class="profile-content">
<section class="post-heading">
<div class="rows">
<div class="col-md-11">
<div class="media">
<div class="media-left">
<a href="#">
<img class="media-object photo-profile" src="https://scontent.fgyd4-2.fna.fbcdn.net/v/t1.0-9/p960x960/73248174_2597397730318615_6397819353256951808_o.jpg?_nc_cat=109&_nc_sid=7aed08&_nc_ohc=VxH_cAqJ778AX_7B97W&_nc_ht=scontent.fgyd4-2.fna&_nc_tp=6&oh=e5b02c7f91818664cf253e71f2ddf106&oe=5F5F4E74" width="40" height="40" alt="...">
</a>
</div>
<div class="media-body">
<a href="/users" class="anchor-username"><h4 class="media-heading">{{$user->name}} </h4></a>
<a href="#" class="anchor-time">{{$post->created_at}}</a>
</div>
</div>
</div>
<div class="col-md-1">
<a href="#"><i class="glyphicon glyphicon-chevron-down"></i></a>
</div>
</div>
</section>
<section class="post-body">
<p>{{ $post->post_description }}</p> <!-- i stick around here -->
</section>
@endforeach
TA贡献1779条经验 获得超6个赞
$users=User::where('id',$id)->get()
; 返回用户的集合
所以当你这样做时:
@foreach($user->getPosts as $post)
$user
是用户的集合。该集合没有 getPosts() 方法。
TA贡献1982条经验 获得超2个赞
您正在返回用户列表,因此您没有一个用户,并且无法拥有所有特定用户的帖子
下面的代码可以解决这个问题:
User::where('id', $id)->first();
TA贡献1810条经验 获得超4个赞
首先你应该像这样更新你的控制器
User::find($id);
你应该像这样更新你的关系
public function posts(){ return $this->hasMany('App\Post','user_id','id'); }
之后你应该像这样更新你的刀片
foreach ($user->posts as $post)
您无法使用 访问帖子->getPosts
。如果你愿意,你应该像这样使用->getPosts()->get()
- 4 回答
- 0 关注
- 148 浏览
添加回答
举报