Лучший способ разбить массив данных на laravel и использовать бесконечную прокрутку с помощью vuejs - PullRequest
0 голосов
/ 22 ноября 2018

Пожалуйста, кто-то должен помочь мне, у меня есть и массив данных (массив содержит сообщения пользователей, вошедших в систему, и сообщения друзей, вошедших в систему: то есть, если я войду в систему, он получит мои сообщения и моипосты друзей), этот массив извлекает все посты, поэтому, если у меня есть 100 друзей, а у каждого из моих друзей 30 постов, я получу 300 постов, я хочу разбить на страницы извлеченные данные и извлечь 5 постов из массива, извлекать больше какпользователь прокручивает страницу вниз, используя laravel и vuejs для отображения данных, пожалуйста, какой лучший способ реализовать это, проверьте мой уже написанный код

public function feeds()
{
    $friends = Auth::user()->friends();

    $feed = array();

    foreach ($friends as $friend):

        foreach ($friend->posts as $post):

            array_push($feed, $post);

        endforeach;

    endforeach;


    foreach (Auth::user()->posts as $post):

        array_push($feed, $post);

    endforeach;

    usort($feed, function($p1, $p2){
        return $p1->id < $p2->id;
    });

    return $feed;
}

vuejs

get_feed()
{
    this.loading = true;
    axios.get('/feed').then((response) => {
        this.loading = true;
        response.data.forEach((post) => {
        this.$store.commit('add_post', post)
            this.loading = false;
        })
    })
} 
computed: {
    posts() {
        return this.$store.getters.all_posts
    },
}

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Спасибо, N69S, я наконец-то придумал это

    public function feeds(){
    $userIds = Auth::user()->friends_id();
    array_push($userIds, Auth::id());

    $feed = Posts::whereIn('user_id', $userIds)->orderBy('id', 'desc')->paginate(5);
    return $feed;
}
0 голосов
/ 22 ноября 2018

здесь гораздо более быстрая версия для получения сообщений.

public function feeds(){
    $userdIds = Auth::user()->friends()->pluck('id')->toArray();
    $userIds[] = Auth::id();

    $feed = Post::whereIn('user_id', $userIds)->orderBy('id', 'desc')->paginate(10);
    return $feed; 
}
...