0

Symfony2 と Doctrine2 でエンティティを作成しています。2 つのエンティティ間の多対多の関係を表すいくつかのエンティティを作成しました。

これらのエンティティの 1 つの例:

/**
 * @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 スキーマを更新しようとしましたが、これらのエンティティに対応するテーブルが表示されません。それらを宣言しなければならない場所はありますか(設定など)?そうでない場合、何が問題なのですか?

どうもありがとう

編集:これらのクラスの名前空間を忘れていたので、Doctrine によって省略されました。別のケースが閉じられました :) 回答ありがとうございます!

4

3 に答える 3

3

仮定..。

いいえ、エンティティディレクトリ以外の場所で宣言する必要はありません。

  • あなたが受け取ったエラーメッセージは何ですか?

  • 追加したと思います

    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;
    }
}

生成されたテーブルは次のとおりです。

ここに画像の説明を入力してください

注意:エンティティの生成に特定の名前空間を使用して正常に機能しました。エンティティを変更する必要があります。

于 2012-06-11T14:06:13.453 に答える