为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
天涯尽头无女友 2023-10-21 16:25:52
//这是我的控制器`公共函数索引($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)
查看完整描述

4 回答

?
慕婉清6462132

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


查看完整回答
反对 回复 2023-10-21
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

$users=User::where('id',$id)->get(); 返回用户的集合

所以当你这样做时:

@foreach($user->getPosts as $post)

$user是用户的集合。该集合没有 getPosts() 方法。


查看完整回答
反对 回复 2023-10-21
?
临摹微笑

TA贡献1982条经验 获得超2个赞

您正在返回用户列表,因此您没有一个用户,并且无法拥有所有特定用户的帖子

下面的代码可以解决这个问题:

   User::where('id', $id)->first();


查看完整回答
反对 回复 2023-10-21
?
蝴蝶不菲

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()


查看完整回答
反对 回复 2023-10-21
  • 4 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信