У меня проблема с лимитом вставки SQL Server. Пока я ищу решение, у меня есть 2 способа решить мою проблему. Первый - отредактировать файл конфигурации SQL (но, возможно, я спрошу своего старшего, могу ли я измениться, потому что клиенты могут быть затронуты, если будет ошибка на стороне базы данных из-за неправильной конфигурации SQL, которую я сделал). Второе решение простое, но я не знаю, должен ли я делать это в цикле или есть способ, который я могу использовать в Laravel / PHP?
Вот ошибка, с которой я сталкиваюсь:
SQL Server поддерживает максимум 2100 параметров.
SQLSTATE [IMSSP]: попытался связать параметр с номером 2101. SQL Serverподдерживает максимум 2100 параметров.
Вот пример кода, который я сделал:
$userPermissions = [];
$branchPermissionUser = BranchPermissionUser::get()->where('branch_id', $branchIdFrom)->whereIn('user_id', $userIds);
foreach($userIds as $userId) {
$permissionIds = $branchPermissionUser->where('user_id', $userId)->pluck('permission_id');
foreach($permissionIds as $permissionId) {
$userPermissions[] = [
'user_id' => $userId,
'branch_id' => $branchIdTo,
'permission_id' => $permissionId
];
}
}
BranchPermissionUser::insert($userPermissions);
Вы заметите, что логика, которую я сделал, это перваяИнициализируйте пустой массив $ userPermissions, а затем каждый $missionId пользователя - я буду нажимать на $ userPermissions.
Существует случай, когда длина этого массива ($ userPermissions) будет больше 2100. И как только длина массива превысит 2100, я сталкиваюсь с ошибкой при вставке SQL.
Чтобы исправить это, я думаю, есть ли способ в Laravel / PHP, чтобы я мог вставить его в виде пакета By 2100. Является ли цикл for достаточным для решения этой проблемы? Или у вас есть какой-нибудь способ решить эту проблему?