我正在使用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省略它们的原因。另一个案例结束了:)感谢答案!
答案 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;
}
}
以下是生成的表格:
注意:我使用特定的命名空间让实体生成工作正常,您需要更改它们。
答案 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; }
}
遇到这个问题是因为我的实体也没有生成,这是我的问题,它可以为那些在同一问题上苦苦挣扎的人节省一些时间。