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:----Kh6qIKf/5mFnQhAS+UTuyBnfIcwzjV7qLJNjUpSR8oPbR7YYRRqvQURAho57McmbNVFXUjRG6BIb75hdb7EV32V8D1qkTZ11bfkwSsXpG22qjWI4NUq/BDuql91GuRSc7Vo2nrgtuxuvuPFUm/8yGtR0oUzvLD6eXA4LHxrdUG4uyrbZzYXskHX81SQAEULpCxbslqSVtpPlHHTy3xE1YsTEvpO9YVJ/m2f7t8tj+D05ZgmrKPvHvT/A4FgCEegG7VUHszcDSINgVWERJqyW4VSuv2c1OnjHSRVOoVi+wcbAt78Dd+1pHsyNiHDoXsSpumOIv+RwDfon4IN4qe0D85nsxtM3Za50wzO3qdn0Sfd3gfHtgHbRiK1D40KSqw7Ey3c+yHcaIGjL58msAC1yTf1ZDbrcnsnnp5sIn5h/b/IWAUq4Hevziugm4Fh50yS5qLRmyKNbtrF6qdFXqYPLTlwU/aLjAJhjjJpJfRuuI+8ROuChA488jNJY+YPwu0FbAN0FDRIqUalgAlNpNj0TaBzL1pRMX4HBRAES41zQ0MZvqTjRixk7mhFJgsYylIpEcXp65tj8nWVRVoRUk6M2yGUTACsKlbp5Yft0gBAojQBEGWFhBhetjWKXSsQ6Ah4lOtiIpXh1p4/F+cV5a63dpJVNUq3eJkKUw6Xqt0y45UA=----ATTACHMENT:----NjU3MDQwNDQxMDY4NDk3IDEyMDU3NTU5NDkwMDYwMjYgMzAxNTcyMDgyNzUwOTY1NQ==