我无法在用户的个人资料中列出用户的帖子。我在用户模型中使用一对多关系

//这是我的控制器`


公共函数索引($id){


    $users=User::where('id',$id)->get();


    return view('user',compact('users'));


}

}`


//这是我的用户模型


   public function getPosts()

{

    return $this->hasMany('App\Post','user_id','id');

}

//这是我的用户刀片


 @foreach($user->getPosts 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">{{$user->$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>{{  $user->getPost->post['post_description']  }}</p> <!--  i stick around here -->

            </section>

//它给了我这个错误


此集合实例上不存在属性 [getPosts]。(查看:C:\xampp\htdocs\site\resources\views\user.blade.php)


天涯尽头无女友
浏览 97回答 4
4回答

慕婉清6462132

在控制器中 get() 将返回集合,您想要一个用户,因此使用 find() 或 first(),它将返回一个用户对象public function index($id){&nbsp; &nbsp; $user=User::find($id); //or $user=User::where('id',$id)->first();&nbsp; &nbsp; return view('user',compact('user'));}关系法public function posts(){&nbsp; &nbsp; return $this->hasMany('App\Post','user_id','id');}由于用户和帖子之间是一对多的关系,因此您必须使用循环来显示用户的帖子foreach($user->posts as $post)&nbsp; &nbsp; &nbsp; &nbsp; <div class="profile-content">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <section class="post-heading">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <div class="rows">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <div class="col-md-11">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <div class="media">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <div class="media-left">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="#">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <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="...">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </a>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <div class="media-body">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="/users" class="anchor-username"><h4 class="media-heading">{{$user->name}} </h4></a>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="#" class="anchor-time">{{$post->created_at}}</a>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <div class="col-md-1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="#"><i class="glyphicon glyphicon-chevron-down"></i></a>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </section>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <section class="post-body">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <p>{{&nbsp; $post->post_description&nbsp; }}</p> <!--&nbsp; i stick around here -->&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </section>@endforeach

哆啦的时光机

$users=User::where('id',$id)->get();&nbsp;返回用户的集合所以当你这样做时:@foreach($user->getPosts as $post)$user是用户的集合。该集合没有 getPosts() 方法。

临摹微笑

您正在返回用户列表,因此您没有一个用户,并且无法拥有所有特定用户的帖子下面的代码可以解决这个问题:&nbsp;&nbsp;&nbsp;User::where('id',&nbsp;$id)->first();

蝴蝶不菲

首先你应该像这样更新你的控制器User::find($id);你应该像这样更新你的关系public&nbsp;function&nbsp;posts(){ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this->hasMany('App\Post','user_id','id'); }之后你应该像这样更新你的刀片foreach&nbsp;($user->posts&nbsp;as&nbsp;$post)您无法使用 访问帖子->getPosts。如果你愿意,你应该像这样使用->getPosts()->get()
打开App,查看更多内容
随时随地看视频慕课网APP