Я хочу вставить Sql-код в базу данных Doctrine Fixtures. Вот мой класс.
class ProvinceFixtures extends BaseFixtures
{
public function loadData(ObjectManager $manager)
{
$sql = '
INSERT INTO `province` (`id`, `name`, `created_at`, `updated_at`) VALUES
(1, \'TP Đà Nẵng\', \'2019-07-09 08:45:02\', \'2019-07-09 08:45:02\'),
(2, \'TP Hà Nội\', \'2019-07-09 08:45:02\', \'2019-07-09 08:45:02\'),
(3, \'TP Hải Phòng\', \'2019-07-09 08:45:02\', \'2019-07-09 08:45:02\');
';
/* @var EntityManagerInterface $manager */
$manager->getConnection()->exec($sql);
$manager->flush();
}
}
Но когда я запускаю doctrine:fixtures:load
, мой Терминал показывает этот журнал.
Call to an undefined method Doctrine\Common\Persistence\ObjectManager::getConnection().
Как я могу это исправить. Спасибо.
* Обновление: BaseFixture
класс
abstract class BaseFixtures extends Fixture
{
/** @var Generator */
protected $faker;
/** @var ObjectManager */
private $manager;
private $referencesIndex = [];
abstract protected function loadData(ObjectManager $manager);
public function __construct()
{
$this->faker = Factory::create();
}
public function load(ObjectManager $manager)
{
$this->manager = $manager;
$this->faker = Factory::create();
$this->loadData($manager);
}
protected function createMany(string $className, int $count, callable $factory)
{
for ($i = 0; $i < $count; ++$i) {
$entity = new $className();
$factory($entity, $i);
$this->manager->persist($entity);
// store for usage later as App\Entity\ClassName_#COUNT#
$this->addReference($className.'_'.$i, $entity);
}
}
}
Я обновил свой класс BaseFixture.