laravel中有有效的方法从数据库中选择记录并设置它们为user_id吗?

时间:2019-05-06 18:34:40

标签: php mysql sql laravel

我必须制作使用数据库100k +记录的laravel应用程序。我有带有列的表:numerdatesegmentuser_id

我正在选择需要的记录:

$datetime = new \DateTime();
$datetime->modify('+6 months');

$seg = "biz";

$select = DB::table('clients')
            ->where('user_id', $id)
            ->where('date','<',$datetime)
            ->where('segment',$seg)
            ->get();

我得到了一些记录,现在,是否为select中的100条记录设置了user_id

主要规则是我无法对数据库中的日期进行排序。

1 个答案:

答案 0 :(得分:1)

您可以在选择给定数量的行进行更新后批量更新

$datetime = new \DateTime();
$datetime->modify('+6 months');

$seg = "biz";

$new_id = 743; // <-------- example of value to be updated

$updated_rows = DB::table('clients')
                  ->where('user_id', $id)
                  ->where('date','<', $datetime)
                  ->where('segment', $seg)
                  ->take(100)                       // <---- # records to be updated
                  ->update(['user_id' => $new_id]); // <---- new value(s) to update

检查与此主题相关的the documentation(面向Eloquent,但也适用于Laravel Query Builder)。

PS:$updated_rows是已更新的行数。