我之前已经添加了实体的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'.
每个实体的相关代码如下:
<?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 …
}
<?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如果有什么东西被缓存在那里,那么我现在已经没有想法了。
任何人都知道可能导致这种情况发生的原因是什么?
答案 0 :(得分:0)
终于找出了造成这种情况的原因。如果您使用类映射加载类而不是标准的ZF2自动加载器并且您忘记更新类地图,则Doctrine会抛出此错误,这是我没有做过的。
只需在项目文件夹中运行它就可以修复它:
php vendor/zendframework/zendframework/bin/classmap_generator.php
Et瞧。