php – Doctrine – Managed Entity – 默认情况下不管理Fetched
发布时间:2020-12-13 16:56:35 所属栏目:PHP教程 来源:网络整理
导读:我正在使用Doctrine for typo3 / cms项目来增强后端工作流程的强大功能. 所以我必须自己开始教义.它的大部分内容非常简单,我根本没有问题.但是当谈到坚持现有的实体时,我仍然坚持不懈.每次我坚持一个现有的实体,它就被创建为一个新实体. 经过一番挖掘后我得
我正在使用Doctrine for typo3 / cms项目来增强后端工作流程的强大功能.
所以我必须自己开始教义.它的大部分内容非常简单,我根本没有问题.但是当谈到坚持现有的实体时,我仍然坚持不懈.每次我坚持一个现有的实体,它就被创建为一个新实体. 经过一番挖掘后我得出结论,那不是“UnitOfWork”的一部分( – > contains(entity)== false).如果我在这个单位内手动注册,一切都工作正常. $this->entityManager->getUnitOfWork()->registerManaged($page,array('uid' => $page->getUid()),array('title' => $page->getTitle())); 但这不可能是故事的结尾..所以我仍然试图找出我的学说有什么不对的地方:D 为什么我的诱惑不被管理? 这是我的DoctrineLoader: private function createEntityManager() { global $GLOBALS; $paths = array( MyT3Extension::rootDir() . '/Configuration/ORM' ); $isDevMode = true; $typoDbConfig = $GLOBALS['TYPO3_CONF_VARS']['DB']; // the connection configuration $dbParams = array( 'driver' => 'pdo_mysql','user' => $typoDbConfig['username'],'password' => $typoDbConfig['password'],'dbname' => $typoDbConfig['database'],'charset' => 'utf8' ); $config = Setup::createYAMLMetadataConfiguration($paths,$isDevMode,MyT3Extension::rootDir() . '/Cache'); $entityManager = EntityManager::create($dbParams,$config); return $entityManager; } orm模型的Yml定义: VendorTypoBundleEntityPage: type: entity table: pages id: { uid: { type: integer,generator: { strategy: AUTO } } } fields: pid: { type: integer } title: { type: string } navTitle: { type: string,column: nav_title } doctype: { type: integer,column: doktype } isSiteroot: { type: boolean,column: is_siteroot } layout: { type: integer } usuage的示例代码是: $page = $this->entityManager->getRepository('VendorTypoBundleEntityPage')->findOneBy(array()); $page->setTitle('Test'); $this->entityManager->persist($page); $this->entityManager->flush(); // will create a new record (new uid) 有效的是: $page = $this->entityManager->getRepository('VendorTypoBundleEntityPage')->findOneBy(array()); $this->entityManager->getUnitOfWork()->registerManaged( $page,array( 'uid' => $page->getUid() ),array( 'title' => $page->getTitle() ) ); $page->setTitle('Test'); $this->entityManager->persist($page); $this->entityManager->flush(); 所以..我希望任何人都可以帮助我:D(我将在教条symfony包中查找解决方案..) 解决方法
好的..我找到了解决方案..我在typo3 extbase中使用了一种特殊的依赖注入“技术”.
如果您将依赖项指定为__concstruct()的参数,则它将注入服务而无需进一步配置.所以我只是假设它使用内部“服务总线”来为相同的对象实例提供所有依赖项,而是为每个依赖项请求创建一个. 所以我有三个不同的实体经理..显然不知何故没有管理实体..抱歉打扰你的人. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |