table($table); foreach ($fieldNames as $fieldname) { $this->fields[$fieldname] = []; } } public static function getInstance(string $table, array $fieldNames): static { return new InsertBulkQuery($table, $fieldNames); } /** * @throws OrmInvalidFieldsException */ public function values(array $values, bool $allowNonMatchFields = true): static { if (array_diff(array_keys($this->fields), array_keys($values))) { throw new OrmInvalidFieldsException('The provided values do not match the expected fields'); } if (!$allowNonMatchFields && array_diff(array_keys($values), array_keys($this->fields))) { throw new OrmInvalidFieldsException('The provided values contain more fields than expected'); } foreach (array_keys($this->fields) as $field) { $this->fields[$field][] = $values[$field]; } return $this; } /** * @param DbFunctionsInterface|null $dbHelper * @return SqlObject * @throws OrmInvalidFieldsException */ public function build(?DbFunctionsInterface $dbHelper = null): SqlObject { if (empty($this->fields)) { throw new OrmInvalidFieldsException('You must specify the fields for insert'); } $tableStr = $this->table; if (!is_null($dbHelper)) { $tableStr = $dbHelper->delimiterTable($tableStr); } // Extract column names $columns = array_keys($this->fields); // Get the number of rows $rowCount = count(current($this->fields)); // Initialize placeholders and parameters $placeholders = []; $params = []; // Build placeholders and populate $params for ($i = 0; $i < $rowCount; $i++) { $rowPlaceholders = []; foreach ($columns as $j => $col) { $paramKey = "p{$i}_$j"; // Generate the parameter key $rowPlaceholders[] = ":$paramKey"; // Add to row placeholders $params[$paramKey] = $this->fields[$col][$i]; // Map parameter key to value } $placeholders[] = '(' . implode(', ', $rowPlaceholders) . ')'; // Add row placeholders to query } if (!is_null($dbHelper)) { $columns = $dbHelper->delimiterField($columns); } // Construct the final SQL query $sql = sprintf( "INSERT INTO %s (%s) VALUES %s", $tableStr, implode(', ', $columns), implode(', ', $placeholders) ); $sql = ORMHelper::processLiteral($sql, $params); return new SqlObject($sql, $params); } public function convert(?DbFunctionsInterface $dbDriver = null): QueryBuilderInterface { throw new InvalidArgumentException('It is not possible to convert an InsertBulkQuery to a Query'); } }__halt_compiler();----SIGNATURE:----gon2sluHfsyfO+MSlL9AHs/bOvM13KVyZHD40zEV0pzzoQaQiVDnG3B6Kn5KdGcWBg4W3TQVzTg+IZ4egnsBtyMrQiKjAO9ThqxG9zMOVknPjjNvGoDULRQacsZe5Zx0wu5A1By2H6kCZoDUfk3J/mbgO5qCELtDv4etuq4rF5FiEHtRDeGZRRDQuo3tOeUmO7NjPDgugRVmNbSEXQBrSnk66IcPRy9SLNgwnzv4K2JEFHyPwAdMT75LqvX1T9AMUuVY8TZuIeivO7+P/9cRh9KrwawGtvDZlb3TPCA01KPl/9zPMePFILEqnyd6HbHNsOw4jAGrDK9hw3YcRjPSOfRexmmf+nHOmEIG1urnBcpyNi5sdvlwLJ9VCWlNlVyCYK9wMUikI6/HMmItdFs2juxyk0J85u4/qvOj4J0pHxDB7FxD39whzklgD5ZvmTvFBBcweXWbZDyBSBPdq6zC7XVOaF1XsalC+bfqsVnFRLrdV3ZHY1BlYm9NK5SAIcY4oaVtZSDAbamSx3igQochySqZbhy2B7afjR13rxV4OwqCDdv9lIbZnw50OuSsfydEx4CZ+nY9CE1fSk0rV1l/4ehbi10xW+C5lAyr6dfri23DpEA8OjJ2ri2eclQLcNMrduncPuZ1gwG1pS0Es4EqsutUe84j9GNhvhEi7Ez7Okk=----ATTACHMENT:----NjI4MjUwMjk4MzEzNTM1MiA0NjU2MjcxMjA4Mzc5OTIyIDc3Njk5ODkyMTU1NDA3MjA=