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 關注
- 210 瀏覽
添加回答
舉報