使用Doctrine Data-Fixtures 回答 Zend Framework 2.5.3。
不确定这是否适用于给定的答案,但他们有点太努力了。如果您检查给定的$manager 对象,您会发现它已经是EntityManager(interface ObjectManager)(至少在 ZF2 中)。因此,您可以直接获取Connection,并且可以在不使用$this->container->get('doctrine.orm.entity_manager')的情况下执行
在我用于创建第一个用户“系统”的 sn-p 下方,带有一个 createdBy FK 对其自身的引用。
public function load(ObjectManager $manager)
{
$sql = 'INSERT INTO users (
id, username, email, display_name, `password`, created_by)
VALUES (:id, :username, :email, :display_name, :password, :created_by)';
$password = $this->createSuperDuperEncryptedPassword();
// $manager === `EntityManager|ObjectManager`, `->getConnection()` is available
$stmt = $manager->getConnection()->prepare($sql);
$stmt->bindValue(':id', 1);
$stmt->bindValue(':username', 'system');
$stmt->bindValue(':email', 'system@system.test');
$stmt->bindValue(':display_name', 'system');
$stmt->bindValue(':password', password );
$stmt->bindValue(':created_by', 1); // Self reference
$stmt->execute();
}