Как лучше реализовать запись в БД? Всем привет!
Есть у меня таблица с пользователями (users) и другая таблица table.
Мне нужно, допустим, за последние 6 месяцев за каждый день записать в таблицу table по несколько записей, связанных с таблицей users.
Как посоветуете это сделать без цикла? Потому что если пользователей будет за 1000, то цикл великоват получится.
Использую Laravel.

21 Авг 2019 в 06:33
197 +1
1
Ответы
1

Вам нужно использовать массовую вставку данных (bulk insert) в базу данных. В Laravel для этого есть метод insert() модели Eloquent. Вот пример, как это можно реализовать:

$userIds = User::pluck('id'); // Получаем массив идентификаторов пользователей
$data = [];
foreach($userIds as $userId) {
// Генерируем данные для вставки в таблицу table для каждого пользователя
for ($i = 0; $i < 180; $i++) { // 6 месяцев * 30 дней
$data[] = [
'user_id' => $userId,
'some_data' => 'some_value',
'created_at' => now()->subDays($i)
];
}
}
Table::insert($data); // Массовая вставка данных

В этом примере мы сначала получаем массив идентификаторов пользователей, затем генерируем данные для вставки в таблицу table для каждого пользователя за последние 6 месяцев. После этого мы используем метод insert() модели Table для массовой вставки сгенерированных данных.

Важно также проверить, что столбец created_at в таблице table правильно настроен для автоматического заполнения текущей датой и временем. А также удостовериться, что у вас есть индекс на столбец user_id для ускорения операций вставки.

20 Апр 2024 в 13:16
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир