在 laravel 中对数据数组进行分页并使用 vuejs 无限滚动的最佳方法
Best way to paginate an array of data in laravel and use infinite scroll with vuejs
请有人帮助我,
我有一个数据数组(该数组包含登录用户 posts 和登录用户朋友的 posts :也就是说,如果我登录,它将获取我的 posts 和我的朋友 posts),这个数组获取所有 post 所以如果我有 100 个朋友并且我的每个朋友有 30 posts,我将获取 300 posts,我想对获取的数据进行分页并从数组中获取 5 posts,当用户向下滚动页面时获取更多
我正在使用 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
},
}
这里有一个更快的版本来检索帖子。
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;
}
感谢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;
}
请有人帮助我, 我有一个数据数组(该数组包含登录用户 posts 和登录用户朋友的 posts :也就是说,如果我登录,它将获取我的 posts 和我的朋友 posts),这个数组获取所有 post 所以如果我有 100 个朋友并且我的每个朋友有 30 posts,我将获取 300 posts,我想对获取的数据进行分页并从数组中获取 5 posts,当用户向下滚动页面时获取更多 我正在使用 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
},
}
这里有一个更快的版本来检索帖子。
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;
}
感谢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;
}