0
我有三個實體:PurchaseOrder,Article和ArticleOrderReference。我需要ArticleOrderReference實體爲每條訂單提供一個整數值。FormType實體:已經使用
所以一個purchaseOrder可以有很多ArticleOrderReferences。一篇文章也可以有很多ArticleOrderReferences。
我的問題是,每個ArticleOrderReference例如與ID:1的PurchaseOrder有關係,可能只有相同的文章只有一次。所以我不能再次選擇同一篇文章。
在我FormBuilderType:
$builder->add('article', 'entity', array(
'class' => 'AcmeAppBundle:Article',
'property' => 'name',
));
$builder->add('amount', 'integer');
我如何能實現呢?
的PurchaseOrder:
class PurchaseOrder{
/** @ORM\OneToMany(targetEntity="ArticleOrderReference", mappedBy="purchaseOrder") */
protected $purchaseOrders;
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;
文章:
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/** @ORM\OneToMany(targetEntity="ArticleOrderReference", mappedBy="article") */
protected $articles;
控制器:
$articleOrder = new ArticleOrderReference();
$form = $this->createForm(new ArticleOrderType(), $articleOrder);
// process the form on POST
if ($request->isMethod('POST')) {
$form->bind($request);
if ($form->isValid()) {
$purchaseOrder = $this->getDoctrine()
->getRepository('AcmeAppBundle:PurchaseOrder')
->find($id);
if (!$purchaseOrder) {
throw $this->createNotFoundException(
'No order found for id '.$id
);
}
$articleOrder->setPurchaseOrder($purchaseOrder);
$em = $this->getDoctrine()->getManager();
$em->persist($articleOrder);
$em->flush();
return $this->redirect($this->generateUrl('order', array('id' => $id)));
}
}
我加入了@UniqueEntity和我的實體使用聲明,但我仍然可以添加同一篇文章多次。 – ChrisS
你可以編輯你的問題,並添加代碼,你可以多次添加同一篇文章? – cheesemacfly
當然可以,我在第一篇文章中加入了我的控制器 – ChrisS