在laravel中,如何使用查询生成器从表中删除固定数量的行?

时间:2016-06-09 11:18:35

标签: php mysql laravel laravel-4

我正在尝试从用户表中删除任意五行。我使用了以下代码。

DB::table('users')->take(5)->delete();

但它会删除该表中的所有行。我将如何克服这个问题?

4 个答案:

答案 0 :(得分:2)

你说你要删除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')

答案 1 :(得分:0)

您可以使用rand()函数并以这种方式删除用户

let userDefaults = NSUserDefaults.standardUserDefaults()
        userDefaults.setObject(listOfPlayers, forKey: "listOfPlayers")
        userDefaults.synchronize()

答案 2 :(得分:0)

您可以使用foreach

$users = DB::table("users")->orderBy(DB::raw("RAND()"))->take(5)->get();
foreach($users as $user){
    DB::table("users")->where("id", $user->id)->delete();
}

答案 3 :(得分:0)

DB::table('users')->whereIn('id', DB::table('users')->take(5)->lists('id'))->delete();