代码之家  ›  专栏  ›  技术社区  ›  slickness

将后台视图存储到表中

  •  0
  • slickness  · 技术社区  · 6 年前

    表格:

    viewables
        user_id
        viewable_id
        viewable_type
    

    编辑:

    帖子在forelse循环中发布,评论在foreach中发布。

     @forelse ($posts as $post)
                @if ($post->type === 1)
    {{$post->body}}
                    @foreach ($post->comments as $comment)          
                       {!!$comment->body!!}
                    @endforeach
                @elseif ($post->type === 2)
    {{$post->image}}
                    @foreach ($post->comments as $comment)          
                       {!!$comment->body!!}
                    @endforeach
                @elseif ($post->type === 3)
    show post with type 3
                @elseif ($post->type === 4)
    show post with type 4
                @else
    show remaining
        @endforelse
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   JPark    6 年前

    根据您的编辑,有几种不同的方法来处理这个问题。从技术上讲,由于页面上包含了所有帖子,因此可以假设用户已经阅读了所有帖子,并在呈现视图之前简单地保存了加载的所有帖子的用户id。

    最好的选择(不需要用户交互)是一次加载两个帖子。滚动时自动(请参阅 this answer )或是借助拉威尔的分页( https://laravel.com/docs/5.7/pagination

    例子:

    $posts = Posts::paginate(5);
    
    foreach($posts as $p) {
        DB::table('viewables')->insert([
            'user_id' => $user->id,
            'viewble_id' => $p->id,
            `viewable_type` => $p->type,
        ]);
    }