Я работаю над проектом с использованием Symfony2. Но у меня проблема. У меня есть объект Purchase, а другой - TypePurchase. У них есть отношения OneToMany, но когда я просматриваю таблицу TypePurchase, идентификатор объекта Purchase не сохраняется. Это значение равно null. Я уже пробовал $ types-> setPurchase ($ this) в методе addType Purchase. Но это дает мне результат, что только первый добавленный объект get имеет идентификатор, а следующий - снова null.ID не сохраняется в отношениях OneToMany
Это мое поле и поле идентификатора в Purchase:
/**
* @ORM\OneToMany(targetEntity="TypePurchase", mappedBy="purchase", cascade={"persist", "remove" })
*/
protected $types;
Это то, что я уже добавил, но не работает в полной мере:
/**
* Add types
*
* @param \Wood\AdminBundle\Entity\TypePurchase $types
* @return Purchase
*/
public function addType(\Wood\AdminBundle\Entity\TypePurchase $types)
{
$this->types[] = $types;
$types->setPurchase($this);
return $this;
}
И это мое поле внутри TypePurchase:
/**
* @ORM\ManyToOne(targetEntity="Purchase", inversedBy="types", cascade={"persist", "remove" })
* @ORM\JoinColumn(referencedColumnName="id")
*/
protected $purchase;
Отредактировано: My ID field in Purchase
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
Это мой createAction в контроллере Purchase:
/**
* @param Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function createAction(Request $request)
{
$purchase = new Purchase();
$purchase->addType(new TypePurchase());
$form = $this->createForm(new PurchaseType(), $purchase);
$form->handleRequest($request);
if($form->isValid()) {
$purchase->setUser($this->getUser());
$purchaseService = $this->get('woodadmin.purchaseservice');
$purchaseService->createPurchase($purchase);
$flash = $this->get('braincrafted_bootstrap.flash');
$flash->success('De inkoop is succesvol geregistreerd.');
$now = time();
if($purchase->getSupplier() != null) {
$date = $purchase->getSupplier()->getFscExpiration()->format('U');
$datediff = $date - $now;
$diff = floor($datediff/(60 * 60 * 24));
if ($diff <= 14) {
$flash->alert('Let op, het FSC-certificaat van de leverancier ' . htmlentities($purchase->getSupplier()->getName()) . ' verloopt bijna of is al verlopen.');
}
$now2 = time();
$date2 = $purchase->getSupplier()->getPefcExpiration()->format('U');
$datediff2 = $date2 - $now2;
$diff2 = floor($datediff2/(60 * 60 * 24));
if ($diff2 <= 14) {
$flash->alert('Let op, Het PEFC-certificaat van de leverancier ' . htmlentities($purchase->getSupplier()->getName()) . ' verloopt bijna of is al verlopen.');
}
}
return $this->redirect($this->generateUrl('wood_admin_purchase_list'));
}
return $this->render('WoodAdminBundle:Purchase:create.html.twig', array('title' => 'Inkoop registreren', 'page' => 'purchases', 'form' => $form->createView()));
}
Моя PurchaseService часть, где я настойчив объект купли-продажи:
public function createPurchase(\Wood\AdminBundle\Entity\Purchase $purchase) {
$this->entityManager->persist($purchase);
$this->entityManager->flush();
}
Покажите нам ваши Controler (или услугу) .Затем мы можем увидеть, как вам удается создать/persit свои объекты. Кроме того, мы можем увидеть определение вашего идентификатора внутри ваших объектов. –
Я обновил вопрос. –
', но когда я заглядываю в таблицу TypePurchase, идентификатор объекта Purchase не сохраняется. Я предполагаю, что вы имеете в виду', но когда я просматриваю таблицу Purchase, идентификатор объекта TypePurchase не сохраняется ' – Patrick