代码和老师是一样的。未投稿的专题文章为空,循环会报错?

来源:2-8 使用scope等完成专题详情页逻辑

精慕门5873187

2020-06-11 21:35:15

后台代码

    //专题详情
    public function show(Topic $topic){
        //文章数
        $topic = Topic::withCount('postTopics')->find($topic->id);
        //专题的文章列表
/*        $posts = DB::table('post_topics')
            ->where('post_topics.topic_id',$topic->id)
            ->leftJoin('posts','post_topics.post_id','=','posts.id')
            ->get();
        if($posts->count()>0){
            foreach ($posts as $key=>$value){
                $posts[$key]->user = DB::table('users')->where('id',$value->user_id)->first();
            }
        }*/
        $posts = $topic->posts()->orderBy('created_at','desc')->take(10)->get();
        //属于我的文章,不属于该专题的文章
        $myposts = \App\Post::authorBy(\Auth()->id())->topicNot($topic->id)->get();
        return view('topic/show',compact(['topic','posts','myposts']));
    }

页面循环代码

<div class="tab-content">
    <div class="tab-pane active" id="tab_1">
        @if(!empty($posts))
            @foreach($posts as $post)
                <div class="blog-post" style="margin-top: 30px">
                    <p class="">
                        <a href="/user/{{$post->user->id}}">{{$post->user->name}}</a> {{$post->created_at->diffForHumans()}}
                    </p>
                    <p class="">
                        <a href="/posts/{{$post->id}}">{{$post->title}}</a>
                    </p>
                    {!! Str::limit($post->content,100) !!}
                </div>
            @endforeach
        @endif
    </div>
</div>

专题有文章的显示不好报错
http://img.mukewang.com/climg/5ee2328809a161dd13960659.jpg
没有文章的专题访问
http://img.mukewang.com/climg/5ee232b10915d25318090893.jpg

这个问题已经问了好几次了,希望能真正的解决一下问题QAQ,很迷惑,实在不行麻烦加QQ看下代码+1491363753
我的laravel版本是7.0的

写回答

1回答

好帮手慕小尤

2020-06-12

同学你好,同学的问题已回复,请同学参考您的上一个问题(http://class.imooc.com/course/qadetail/228985  )。

注:同学的版本是laravel7.0,则建议同学参考第二种解决方案。

祝学习愉快!

0

0 学习 · 721 问题

查看课程