Laravel 返回数据库中的随机一行数据

文章目录

    最佳方式

    $total = Book::count() - 1;
    $skip = mt_rand(0, $total);
    $item = Book::select('name', 'author_id')->skip($skip)->take(1)->first();
    

    耗内存的方式

    Book::inRandomOrder()->get();
    

    等同于

    Book::orderByRaw("RAND()")->get();
    

    耗内存的原因是,随机序需要建立临时表。

    更加耗内存的 Collection 方案

    Book::all()->random(1);
    

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式