Здравствуйте, не могу понять в чем проблема. Когда через Doctrine пытаюсь вставить 3 - 10 т. строк. в базу заходит ровно в два раза больше. То есть алгоритм какой то странный, я вставляю в таблицу (А) 5 т. строк, потом начинаю вставку в таблицу (Б) 3 тыс. строк и как раз вот эти 3 тыс, почему то заходит 6 тыс в базу. При это, если я начну опять запускать скрипт на вставку в таблицу (Б) 3 тыс, то второй раз зайдет уже без умножения на 2. Я проверил циклы все нормально, это Doctrine внутри себя что то делает. При это я делаю $em->flush, $em-clear(), через каждые 200 записей. Пробовал чистить кеш запросы\результат через консоль, всеравно не влияет. Помогите кто-то пожалуйста, уже не один час сижу не могу разобраться, при этом инфы по этому поводу нету.
Функция:
public function test(){
$reader = ReaderFactory::create(Type::XLSX);
$file = base_path() . '/excel/cars.xlsx';
$reader->open($file);
foreach ($reader->getSheetIterator() as $sheet) {
foreach ($sheet->getRowIterator() as $key => $row) {
$test = new \Entities\Test();
$test
->setCod('CC')
->setName($row[0])
->setImg('')
->setLang(1);
EntityManager::persist($test);
if($key % 200 == 0){
EntityManager::flush();
EntityManager::clear();
}
}
}
EntityManager::flush();
EntityManager::clear();
$reader->close();
}
Сущность:
<?php
namespace Entities;
use Doctrine\ORM\Mapping as ORM;
/**
* Rating
*
* @ORM\Table(name="test")
* @ORM\Entity(repositoryClass="\Entities\repositories\TestRepository")
*/
class Test
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var integer
*
* @ORM\Column(name="cod", type="string", length=3, nullable=false)
*/
private $cod;
/**
* @var string
*
* @ORM\Column(name="img", type="string", length=50, nullable=false)
*/
private $img;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=100, nullable=false)
*/
private $name;
/**
* @var integer
*
* @ORM\Column(name="lang", type="integer", nullable=false)
*/
private $lang;
public function getId()
{
return $this->id;
}
public function setCod($cod)
{
$this->cod = $cod;
return $this;
}
public function getCod()
{
return $this->cod;
}
public function setImg($img)
{
$this->img = $img;
return $this;
}
public function getImg()
{
return $this->img;
}
public function setName($name)
{
$this->name = $name;
return $this;
}
public function getName()
{
return $this->name;
}
public function setLang($lang)
{
$this->lang = $lang;
return $this;
}
public function getLang()
{
return $this->lang;
}
}