PurchaseOrder、Article、Supplier というエンティティを持つ Symfony プロジェクトがあります。1 つの注文に複数の商品を含めることができ、1 つの注文に複数のサプライヤーを含めることができます。各記事の金額は、ArticleOrderReference (エンティティ) を介して設定できます。
フォームを作成し、金額 (ArticleOrderReference のエントリ) を使用して注文に記事を追加できます。さらに、注文にサプライヤーを追加できる別のフォームがあります。
しかし、今私の問題は、注文に関連するすべてのサプライヤーに表示される金額入力フィールド (ArticleOrderReference のこの注文に関連するすべての記事) があるフォームを作成したいということです。例えば:
Order 1:
Article1 [amount InputField for Supplier1] [amount InputField for Supplier2] ...
Article2 [amount InputField for Supplier1] [amount InputField for Supplier2] ...
そこで、 Supplier_id 、 ArticleOrderReference_id 、 amount を含む ArticleOrderSupplierReference という名前の別のエンティティを作成します。
これを実現する方法がわかりません。埋め込みコレクションを使用するように言われた人もいますが、そのような状況でそれらを使用する方法がわかりません。何か案は?
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;