Files
sveden-parser/src/ContingentParser/ContingentRepository.php

43 lines
1.4 KiB
PHP

<?php
namespace SvedenParser\ContingentParser;
use NilPortugues\Sql\QueryBuilder\Builder\GenericBuilder;
use SvedenParser\Repository;
final class ContingentRepository extends Repository
{
/**
* Внесение данных численности обучающихся в базу данных opendata
* @param array $data
* Массив записей численности по специальностям
* @return void
*/
public function insert(array $data): void
{
/*
INSERT INTO sveden_education_contingent
(org_id, spec_id, spec_code, spec_name, edu_level, edu_forms, contingent)
VALUES
(:v1, :v2, :v3, :v4, :v5, :v6, :v7)
...
*/
$builder = new GenericBuilder();
$countAtributes = count($data[0]);
$size = $countAtributes * (count($data) - 1);
$query = $builder->insert()
->setTable('sveden_education_contingent')
->setValues(
$data[0]
);
$sql = $builder->write($query);
for ($i = $countAtributes; $i <= $size;) {
$sql .= " (:v".(++$i).", :v".(++$i).", :v".(++$i).", :v"
.(++$i).", :v".(++$i).", :v".(++$i).", :v".(++$i).")\n";
}
$sql = preg_replace('/\)\s*VALUES\s*/', ') VALUES ', $sql);
$sql = preg_replace('/\)\s*\(/', '), (', $sql);
$this->opendata->insert($sql, $data);
}
}