ZF2中的Doctrine ORM给出"目标实体Application \\ Entity \\ UserCmsPermission在' Application \\ Entity \\ User#cmsPermissions'中找不到。"。

时间:2014-08-22 11:55:30

标签: php doctrine-orm zend-framework2

我之前已经添加了实体的ZF2项目,我刚刚通过复制现有实体并根据需要更改细节来添加新实体。此UserCmsPermission实体通过User实体的User媒体资源链接到cmsPermissions实体。

我使用以下命令重新部署了数据库:

doctrine-module orm:schema-tool:drop --force
doctrine-module orm:schema-tool:create
doctrine-module data-fixture:import

这成功执行,完全没有错误。但是,当我访问我的应用程序时,我收到以下错误:

The target-entity Application\\Entity\\UserCmsPermission cannot be found in
'Application\\Entity\\User#cmsPermissions'.

每个实体的相关代码如下:

模块/应用/ SRC /应用/实体/ user.php的

<?php

/**
 * User model
 *
 *
 */

namespace Application\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Tilt\Entity\Base\User as TiltUser;

/**
 * @ORM\Entity
 */
class User extends TiltUser
{

    // … etc …

    /**
     * @var ArrayCollection
     *
     * @ORM\OneToMany(targetEntity="UserChallenge", mappedBy="user", cascade={"all"})
     */
    protected $challenges;

    /**
     * @var ArrayCollection
     *
     * @ORM\OneToMany(targetEntity="UserCmsPermission", mappedBy="user", cascade={"all"})
     */
    protected $cmsPermissions;

    // … etc …

}

模块/应用/ SRC /应用/实体/ UserCmsPermission.php

<?php

/**
 * User CMS Permission model
 *
 *
 */

namespace Application\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Tilt\Exception\InvalidArgumentException;
use Tilt\Entity\Base\Entity as BaseEntity;

/**
 * @ORM\Entity
 */
class UserCmsPermission extends BaseEntity
{

    // … etc …

    /**
     * @var User
     *
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
     * @ORM\ManyToOne(targetEntity="User", inversedBy="cmsPermissions", cascade={"all"})
     */
    protected $user;

    // … etc …

}

据我所知,代码是正确的,我还删除了data/DoctrineORMModule/以防缓存实体元数据,但这并没有解决问题,也没有重启PHP5-FPM如果有什么东西被缓存在那里,那么我现在已经没有想法了。

任何人都知道可能导致这种情况发生的原因是什么?

1 个答案:

答案 0 :(得分:0)

终于找出了造成这种情况的原因。如果您使用类映射加载类而不是标准的ZF2自动加载器并且您忘记更新类地图,则Doctrine会抛出此错误,这是我没有做过的。

只需在项目文件夹中运行它就可以修复它:

php vendor/zendframework/zendframework/bin/classmap_generator.php

Et瞧。