Symfony 如何定义允许用户添加新“一对多”原则关联?
我正试图定义我的条令实体,以便与Symfony2一起使用,但我不清楚如何定义关联。下面的例子是为客户编写一份他们想要定制自行车的部件清单 BikeEnquiry对象可以: 只拍一帧 默认情况下需要两个轮子,但可以是零或更多 然而,关于附件,我不太确定这些应该如何映射 用户应该能够从附件下拉列表中进行选择,以查看数据库中的所有项目-但是,如果市场上不存在新产品,他们也应该能够手动输入他们正在寻找的产品的描述。我希望这个新的附件,然后被添加到附件数据库表-这也将是很好的,它作为一个未经验证的项目,我的审查标记 下面是我定义实体和注释关联的尝试:Symfony 如何定义允许用户添加新“一对多”原则关联?,symfony,doctrine-orm,one-to-many,Symfony,Doctrine Orm,One To Many,我正试图定义我的条令实体,以便与Symfony2一起使用,但我不清楚如何定义关联。下面的例子是为客户编写一份他们想要定制自行车的部件清单 BikeEnquiry对象可以: 只拍一帧 默认情况下需要两个轮子,但可以是零或更多 然而,关于附件,我不太确定这些应该如何映射 用户应该能够从附件下拉列表中进行选择,以查看数据库中的所有项目-但是,如果市场上不存在新产品,他们也应该能够手动输入他们正在寻找的产品的描述。我希望这个新的附件,然后被添加到附件数据库表-这也将是很好的,它作为一个未经验证的项目,我
use Doctrine\Common\Collections\ArrayCollection;
/** @Entity **/
class BikeEnquiry
{
private $BikeEnquiryid;
private $frameid;
/**
* @OneToMany(targetEntity="Wheel", mappedBy="wheelid")
**/
private $wheelid;
/**
* @ManyToMany(targetEntity="Accessory")
* @JoinTable(name="BikeEnquires_accessories",
* joinColumns={@JoinColumn(name="BikeEnquiryid", referencedColumnName="BikeEnquiryid")},
* inverseJoinColumns={@JoinColumn(name="accessoryid", referencedColumnName="accessoryid", unique=true)}
* )
**/
private $accessories;
public function __construct() {
$this->accessories = new ArrayCollection();
}
}
/** @Entity **/
class Frame
{
/**
* @OneToOne(targetEntity="BikeEnquiry")
* @JoinColumn(name="BikeEnquiryid", referencedColumnName="BikeEnquiryid")
**/
private $frameid;
}
/** @Entity **/
class Wheel
{
/**
* @ManyToOne(targetEntity="BikeEnquiry")
* @JoinColumn(name="BikeEnquiryid", referencedColumnName="BikeEnquiryid")
**/
private $wheelid;
}
/** @Entity **/
class Accessory
{
private $accessoryid;
}
您应该仔细查看ERD实体关系图。但是在BikeEnquiry实体中,你应该和Frame有一对一的关系,也就是说一个BikeEnquiry必须有一个Frame。和轮子的一对多关系。说你可以有一个或多个轮子谢谢-我已经更新了我问题中的代码,正如你所指出的不,不要使用OneToOne。在这种情况下,只有一辆自行车可以有一个框架。下一个比基尼再也受不了了。很多人都很好。我发现您使用@而不是@ORM/注释,而最后一个注释在Symfony中很常见。使用不同的实体,如框架、车轮、座椅等。与使用一个附件实体相比,这是一个困难的决定,尽管我认为我应该选择最后一个。谢谢-我将在bikeOrder框架中改回ManyTone。我不能使用一个辅助实体作为“捕获全部”,因为数据库表中的每个实体都有其他字段。但对于我的附属实体,是否可以让用户向数据库表输入新术语?