我们有这样的存储库
class CronInfoCharacterInfoRepository extends EntityRepository
{
/**
* @param string|integer $characterID
* @return void
*/
public function add($characterID)
{
if (!$this->find($characterID)) {
$oEntry = new CronInfoCharacterInfo();
$oEntry->setCharacterID($characterID);
$this->getEntityManager()->persist($oEntry);
$this->getEntityManager()->flush();
}
}
}
但是我想通过DQL插入新条目。如何通过$this->createQueryBuilder()... ?在存储库中使用"实体管理器"是否正常?
你不能使用 DQL 插入,文档对此进行了说明
DQL 中不允许使用 INSERT 语句,因为实体及其 必须通过以下方式将关系引入持久性上下文中 EntityManager#persist() 来确保对象模型的一致性。
http://docs.doctrine-project.org/en/latest/reference/dql-doctrine-query-language.html
在repo 中使用 enitity 管理器是完全可以的。你现在做的是正确的!