[英]Symfony2 : Entities not created in database
我正在用Symfony2和Doctrine2制作实体。 我制作了一些实体,它们代表了我两个实体之间的多对多关系。
这些实体之一的示例:
/**
* @ORM\Entity
*/
class Contact_Conference_Invitation
{
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Aurae\UserBundle\Entity\Contact")
*/
private $contact;
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Aurae\ConferenceBundle\Entity\Conference")
*/
private $conference;
/**
* @var datetime dateInvitation
*
* @ORM\Column(name="dateInvitation", type="datetime")
*/
private $dateInvitation;
//Getters and setters
}
我尝试更新我的sql模式,但是没有出现与这些实体相对应的表。 我必须在某个地方声明它们(配置等)吗? 如果不是,那是什么问题?
非常感谢
编辑:我已经忘记了这些类的名称空间,这就是为什么它们在教义中被忽略了。 另一个案件结案:)感谢您的回答!
假设...
不,您无需在Entity目录中的其他任何地方声明它们。
您收到什么错误消息?
我想你加了
使用Doctrine \\ ORM \\ Mapping作为ORM;
在您的课程的顶部,以便将它们映射。
我试过了 ...
我试图通过添加一个简单的Contact&Conference实体来生成您的实体,并且它工作正常。 以下是代码片段:
Contact_Conference_Invitation.php
namespace Ahsio\StackBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class Contact_Conference_Invitation
{
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Ahsio\StackBundle\Entity\Contact")
*/
private $contact;
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Ahsio\StackBundle\Entity\Conference")
*/
private $conference;
/**
* @var datetime dateInvitation
*
* @ORM\Column(name="dateInvitation", type="datetime")
*/
private $dateInvitation;
//Getters and setters
}
Contact.php
namespace Ahsio\StackBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class Contact
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @param $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}
Conference.php
namespace Ahsio\StackBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class Conference
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @param $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}
这是生成的表:
注意:我使用了特定的名称空间来使实体生成正常,您需要更改它们。
在您提供的代码示例中,我看不到ManyToMany关系的定义。
例如,这是我为项目实现的ManyToMany关系
实体Project.php
/**
* @var Provider[]
*
* @ORM\ManyToMany(targetEntity="Provider", mappedBy="projects")
*/
protected $providers = null;
实体Provider.php
/**
* @var Project[]
*
* @ORM\ManyToMany(targetEntity="Project", inversedBy="providers")
* @ORM\JoinTable(name="PROVIDER_PROJECT")
*/
protected $projects = null;
如您所见,在这里您可以为ManyToMany关系定义联接表。
当然这些实体是特定于我的特定项目的,但是您了解了这个想法,并且可以轻松地将其适应您的需求。
同样不要忘记检查您是否启用了自动映射。
在您的config.yml中,您应该
doctrine:
orm:
auto_mapping: true
之所以遇到这个问题,是因为我的实体也没有生成,这是我的问题,它可以为陷入同一问题的人们节省一些时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.