目前,我正在使用只加载前20-40个数据的分页,并使用Laravel作为后端,为Android中的市场创建API。是否有选择随机数据但数据只加载一次的查询?例如mysql: A、B、C、D、E、F
第一个api调用使用inRandomOrder->api(3):A,B,E
但在第二次通话中: C,D,F
编辑:添加inRandomOrder函数
编辑更多解释:我想获取随机20个数据项(有1000个数据)。因为我使用的是“类似无限滚动”,所以我不希望一次加载所有1000个数据(性能问题)。因此,当我想要加载更多的数据时,我需要再次调用API,但是如果使用随机顺序,数据可能会加载两次或更多次。
I:有6个数据(A,B,C,D,E,F)按随机顺序(A,B,F)第一次调用,但在第二次调用中它将加载C,D,E
对不起,如果这样问错了..。这是我第一次问堆叠溢出
发布于 2019-03-29 01:27:27
您必须将它保存在访问api的时间的某个地方。
我会用你的api调用发送一个计数器
非常基本的方法:
编辑:添加了
路由:
Route::get('getdata/{counter}/{take}', ['uses' => 'APIController@getdata']);主计长:
public function getdata($counter, $take) {
Model::skip($counter)->orderByRaw("RAND()")->take($take)->get();
}编辑:添加orderByRaw
因此,在您的api调用中,添加url.com/howmanytoskip/howmanyto举/
在api调用中:您必须增加跳过,加载多少,减少操作,这样每次加载就可以获得更少的项目。
发布于 2019-03-29 02:37:22
只需使用inRandomOrder()函数随机搜索即可。
PD: OP没有提供足够的信息,所以我将以User模型为例。
定义端点:
/** api.php */
use App\Http\Controllers\UserController;
// ...
Route::get('/random-users', [UserController::class, 'getRandom']);然后在你的控制器里:
/** UserController.php */
use App\User;
// ...
public function getRandom()
{
$users = User::inRandomOrder() // <--- randomizing
->take(3) // <--- limiting response to 3 items
->get(); // <--- getting the results
return response()->json(['users' => $users], 200);
}因此,现在只需对前面定义的端点进行GET调用,就可以得到随机数据:
GET http://www.my-website.com/api/random-usershttps://stackoverflow.com/questions/55408963
复制相似问题