Php 在laravel中,如何使用查询生成器从表中删除固定数量的行?
我正在尝试从users表中删除任意五行。我使用了下面的代码Php 在laravel中,如何使用查询生成器从表中删除固定数量的行?,php,mysql,laravel,laravel-4,Php,Mysql,Laravel,Laravel 4,我正在尝试从users表中删除任意五行。我使用了下面的代码 DB::table('users')->take(5)->delete(); 但它会删除该表中的所有行。我将如何克服此问题?您说过要随机删除5行,在这种情况下,这将起作用,我已经测试过: DB::table('users')->whereIn('id', DB::table('users')->orderBy(DB::raw("RAND()"))->take(5)->lists('id'))->
DB::table('users')->take(5)->delete();
但它会删除该表中的所有行。我将如何克服此问题?您说过要随机删除5行,在这种情况下,这将起作用,我已经测试过:
DB::table('users')->whereIn('id', DB::table('users')->orderBy(DB::raw("RAND()"))->take(5)->lists('id'))->delete();
它将使用5个随机ID,然后通过两个查询删除带有这些ID的行:
select `id` from `users` order by RAND() asc limit 5
delete from `users` where `id` in ('786', '186', '82', '578', '232')
您可以使用rand()函数以这种方式删除用户
DB::table('users')->DB::table('users')->orderby(RAND())->take(5)->delete();
您可以使用
foreach
$users = DB::table("users")->orderBy(DB::raw("RAND()"))->take(5)->get();
foreach($users as $user){
DB::table("users")->where("id", $user->id)->delete();
}
看看这个,你会得到你的答案,你不能删除这样的行。你到底想做什么?你可以先获取前5条记录,然后检查user.id是否存在并删除them@GONG:我可以获取任意数量的记录,因为我无法删除所选数量的记录。那是我的problem@AlexeyMezenin:我只想为我的项目随机删除任何五条记录。我将如何使用where()?tahnks实现我的条件供您回复。我只是想删除没有foreach的行。有什么选择吗?为什么不只选择ID并用where删除它们呢?@GONG是的,可能是这样)@manoos尝试更改
take
至limit
DB::table('users')->whereIn('id', DB::table('users')->take(5)->lists('id'))->delete();