Symfony2:未在数据库中创建的实体

时间:2012-06-11 13:25:04

标签: php symfony doctrine-orm

我正在使用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架构,但不会显示与这些实体对应的表。有什么地方我必须声明它们(配置或类似)?如果没有,那有什么不对?

非常感谢

编辑:我忘记了这些类的命名空间,这就是Doctrine省略它们的原因。另一个案例结束了:)感谢答案!

3 个答案:

答案 0 :(得分:3)

假设......

不,您不需要在Entity目录中的任何其他位置声明它们。

  • 您收到的错误消息是什么?

  • 我猜你添加了

    将Doctrine \ ORM \ Mapping用作ORM;

位于类的顶部,以便映射它们。

我试过......

我尝试通过添加一个简单的Contact& amp;来生成您的实体。会议实体,它的工作正常。 以下是代码段:

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

以下是生成的表格:

enter image description here

注意:我使用特定的命名空间让实体生成工作正常,您需要更改它们。

答案 1 :(得分:0)

我在您提供的代码示例中没有看到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关系的连接表。

当然,这些实体是针对我的特定项目的,但您可以理解,并且可以根据自己的需要轻松调整。

答案 2 :(得分:0)

另外,请不要忘记检查是否已启用自动启动功能。

在你的config.yml中你应该有

 public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    int x = 150;


    int red = 0x33, green = 55, blue = 0x77;


    private void textBox1_TextChanged(object sender, EventArgs e)
    {

        red = Convert.ToInt32(textBox1.Text);
        Color c = Color.FromArgb(0, green, blue);
    }

    private void textBox3_TextChanged(object sender, EventArgs e)
    {
        blue = Convert.ToInt32(textBox3.Text);
        Color c = Color.FromArgb(red, green, 0);



    }

    private void textBox2_TextChanged(object sender, EventArgs e)
    {

        green = Convert.ToInt32(textBox2.Text);
        Color c = Color.FromArgb(red, 0, blue);


    }

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        Graphics g = e.Graphics;
        SolidBrush brush = new SolidBrush(Color.Red);
        Color myRgbColor = new Color();
        g.FillRectangle(brush, x, 20, 100, 100);
        myRgbColor = Color.FromArgb(red, green, blue);

        {


        }
    }

    private void btnKlick_Click(object sender, EventArgs e)
    {

        Color myRgbColor = new Color(); 
        myRgbColor = Color.FromArgb(red, green, blue);






    }

    public Color myRgbColor { get; set; }


    public object FromArgb { get; set; }
}

遇到这个问题是因为我的实体也没有生成,这是我的问题,它可以为那些在同一问题上苦苦挣扎的人节省一些时间。