首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只接受一次随机数据的数据库查询

问只接受一次随机数据的数据库查询
EN

Stack Overflow用户
提问于 2019-03-29 00:46:05
回答 2查看 94关注 0票数 0

目前,我正在使用只加载前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

对不起,如果这样问错了..。这是我第一次问堆叠溢出

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-29 01:27:27

您必须将它保存在访问api的时间的某个地方。

我会用你的api调用发送一个计数器

非常基本的方法:

编辑:添加了

路由:

代码语言:javascript
复制
 Route::get('getdata/{counter}/{take}', ['uses' => 'APIController@getdata']);

主计长:

代码语言:javascript
复制
public function getdata($counter, $take) {
  Model::skip($counter)->orderByRaw("RAND()")->take($take)->get();
}

编辑:添加orderByRaw

因此,在您的api调用中,添加url.com/howmanytoskip/howmanyto举/

在api调用中:您必须增加跳过,加载多少,减少操作,这样每次加载就可以获得更少的项目。

票数 0
EN

Stack Overflow用户

发布于 2019-03-29 02:37:22

只需使用inRandomOrder()函数随机搜索即可。

PD: OP没有提供足够的信息,所以我将以User模型为例。

定义端点:

代码语言:javascript
复制
/** api.php */

use App\Http\Controllers\UserController;

// ...

Route::get('/random-users', [UserController::class, 'getRandom']);

然后在你的控制器里:

代码语言:javascript
复制
/** 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调用,就可以得到随机数据:

代码语言:javascript
复制
GET http://www.my-website.com/api/random-users
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55408963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档