簡體   English   中英

Symfony2:實體未在數據庫中創建

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM