我想通过 Doctrine Fixtures 将一些 Sql 代码插入数据库。这是我的课。
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 课程。