我有一个Symfony项目与实体:PurchaseOrder,Article,Supplier。 订单可以有多个文章,并且订单可以有多个供应商。 您可以通过ArticleOrderReference(实体)设置每篇文章的数量。相关实体的多个输入字段
我构建了一个表单,我可以在这里添加文章到带有金额(ArticleOrderReference中的条目)的订单。 此外,我还有另一种形式,我可以在订单中添加供应商。
但现在我的问题是,我想创建一个表单,其中我有一个金额输入字段(对于ArticleOrderReference中与此订单相关的每篇文章),该表单适用于与订单相关的每个供应商。 例如:
Order 1:
Article1 [amount InputField for Supplier1] [amount InputField for Supplier2] ...
Article2 [amount InputField for Supplier1] [amount InputField for Supplier2] ...
所以我建一个实体命名ArticleOrderSupplierReference,其中包括supplier_id,ArticleOrderReference_id和金额。
我没有线索,如何实现这一点。有些人告诉我使用嵌入式收藏,但我不知道如何在这种情况下使用它们。有任何想法吗?
ArticleOrderReference:
class ArticleOrderReference
{
...
/** @ORM\ManyToOne(targetEntity="Article", inversedBy="articles") */
protected $article;
/** @ORM\ManyToOne(targetEntity="PurchaseOrder", inversedBy="purchaseOrders") */
protected $purchaseOrder;
/**
* @var integer
*
* @ORM\Column(name="amount", type="integer")
*/
private $amount;
...
}
文章:
class Article
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/** @ORM\OneToMany(targetEntity="ArticleOrderReference", mappedBy="article") */
protected $articles;
public function __construct() {
$this->articles = new ArrayCollection();
}...
订单:
class PurchaseOrder
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var \DateTime
*
* @ORM\Column(name="date", type="datetime")
*/
private $date;
/** @ORM\OneToMany(targetEntity="ArticleOrderReference", mappedBy="purchaseOrder") */
protected $purchaseOrders;
/**
* @ORM\ManyToMany(targetEntity="Supplier", inversedBy="purcaseOrders")
* @ORM\JoinTable(name="purchaseOrders_suppliers")
*/
private $suppliers;
public function __construct()
{
$this->purchaseOrders = new ArrayCollection();
$this->suppliers = new ArrayCollection();
}...
供应商:
class Supplier
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @ORM\ManyToMany(targetEntity="purchaseOrder", mappedBy="suppliers")
*/
private $purchaseOrders;
public function __construct() {
$this->purchaseOrders = new ArrayCollection();
}
ArticleOrderSupplierReference:
class AOSupplierReference
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/** @ORM\ManyToOne(targetEntity="ArticleOrderReference", inversedBy="articleOrderReferences") */
protected $articleOrderReference;
/** @ORM\ManyToOne(targetEntity="Supplier", inversedBy="suppliers") */
protected $supplier;
/**
* @var integer
*
* @ORM\Column(name="amount", type="integer")
*/
private $amount;
你的实体是如何设计的支持这个功能? – cheesemacfly
我想可以使用嵌套集合来实现,但我还没有尝试过..:) – ihsan
cheesemacfly:订单<->产品多对多关系和订单<->供应商多对多关系 ihsan:我会尝试thx – ChrisS