[英]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.