加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Doctrine – Managed Entity – 默认情况下不管理Fe

发布时间:2021-08-28 03:43:54 所属栏目:大数据 来源: https://www.jb51.cc
导读:我正在使用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()的参数,则它将注入服务而无需进一步配置.所以我只是假设它使用内部“服务总线”来为相同的对象实例提供所有依赖项,而是为每个依赖项请求创建一个.

所以我有三个不同的实体经理..显然不知何故没有管理实体..抱歉打扰你的人.

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读