Есть ли эффективный способ выбрать записи из базы данных и установить их user_id? - PullRequest
0 голосов
/ 06 мая 2019

Я должен сделать приложение laravel, которое использует базу данных 100k + записей.У меня есть таблица с колонками: numer, date, segment, user_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();

Я получаю некоторые записи, и теперь, есть ли в любом случае набор user_id для примерно 100 записей из select?

Главное правило - я не могу сортировать даты в базе данных.

1 Ответ

1 голос
/ 06 мая 2019

Вы можете массовое обновление строк после выбора заданного количества строк для обновления:

$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

Проверка документации , относящейся к этой теме (он ориентирован на Eloquent, но также применим и для Laravel Query Builder.

PS: $updated_rows - это количество строк, которые были обновлены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...