我有一个奇怪的问题。
我对symfony2完全不熟悉,如果这是一个愚蠢的问题,请原谅我。
但是,我正在尝试创建两个实体,这些实体将持久数据发送到数据库,并且两个实体将是一个用于用户,一个用于组。
我已经在tutorial之后定义了这两个类,并且一切似乎都没问题,因为我只创建了第一个实体并运行php app/console doctrine:schema:update --force
- 顺便说一句,数据库是alredy创建的!
我第二次决定创建第二个实体(与第一个实体有关系,我决定使用学说符号来定义那个关系)。
这是我的重要代码
// src/Sestante/UserBundle/Entity/User.php
[...]
/**
* @ORM\ManyToMany(targetEntity="GroupAndRoles", inversedBy="users")
*
*/
private $groups;
[...]
和
// src/Sestante/UserBundle/Entity/GroupAndRoles.php
<?php
namespace Sestante\Bundle\UserBundle\Entity;
use Symfony\Component\Security\Core\Role\RoleInterface;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="groups")
* @ORM\Entity()
*/
class GroupAndRoles implements RoleInterface
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id()
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(name="name", type="string", length=30)
*/
private $name;
/**
* @ORM\Column(name="role", type="string", length=20, unique=true)
*/
private $role;
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="groups")
*/
private $users;
public function __construct()
{
$this->users = new ArrayCollection();
}
// ... getters and setters for each property
/**
* @see RoleInterface
*/
public function getRole()
{
return $this->role;
}
}
?>
当我再次跑php app/console doctrine:schema:update --force
时,我收到此错误
致命错误:无法在第13行的/var/www/html/symfony/Symfony/src/Sestante/UserBundle/Entity/GroupAndRoles.php中重新声明类Sestante \ Bundle \ UserBundle \ Entity \ GroupAndRoles
此外,我试图从我的应用程序的根目录中找到一个文件,该文件可以使用该命令find . -type f -exec grep Sestante\Bundle\UserBundle\Entity\GroupAndRoles {} \;
重新定义该实体,但没有产生任何结果。
我想我错过了某些东西,比如,缓存或与之相关的东西? (阅读symfony一书中的一章,讲述了这一点,但不记得它。)
答案 0 :(得分:1)
这可能只是一个拼写错误,但是您发布的文件顶部注释中的文件路径与致命错误和命名空间声明中的文件路径不同。您是否在src/Sestante/UserBundle/Entity/GroupAndRoles.php
和src/UserBundle/GroupAndRoles.php
上复制了文件?
答案 1 :(得分:1)
当我忘记声明我的命名空间(使用Zend 1.12和Doctrine 2)时,我遇到了这个问题。在文件类型中添加名称空间声明修复了我的问题。