привет!
у меня есть 2 таблицы:
product и portfolio. связаны они по ID продукта, т.е. в первой таблице есть ID (Primary Key) и название (Unique) продукта, а в другой productname_id. связь ManyToOne unidirectional.
когда добавляю новый продукт в портфолио, названия которого еще нет первой таблице, то все работает отлично. а когда продукт уже есть, то пытаюсь вставить только productname_id в таблицу портфолио. но ничего не получается, в базу попадает NULL.. не могу понять в чем моя ошибка?
спасибо!
когда продукт уже есть:
$product= $entityManager->getRepository("My\Product")->find(15);
$portfolio->setProduct($product);
$entityManager->flush();
Получается что у вас в портфолио может находится только один продукт?
Цитата (Bolik @ 27.09.2013 - 22:52) |
связь ManyToOne |
спасибо. вот как я это сейчас делаю:
public function createAction(Request $request) {
$product = new Portfolio();
$form = $this->createForm(new PortfolioType(), $product);
$form->handleRequest($request);
if ($form->isValid()) {
$products = $this->getDoctrine()
->getRepository('BookingBookingBundle:Product')
->findOneByProductname($form->getNormData()->getProductname()->getProductname());
if($products) {
$product->setProductname();
$productname->setProductnameid(trim($products->getId()));
$em = $this->getDoctrine()->getManager();
$em->persist($product);
$em->flush();
return $this->redirect($this->generateUrl('booking_portfolio'));
}
$em = $this->getDoctrine()->getManager();
$em->persist($product);
$em->flush();
return $this->redirect($this->generateUrl('booking_portfolio'));
}
return $this->render('BookingBookingBundle:Portfolio:createportfolio.html.twig', array( 'form' => $form->createView(), 'message' =>'Insert new Product'));
}
Цитата |
Получается что у вас в портфолио может находится только один продукт? Цитата (Bolik @ 27.09.2013 - 22:52) связь ManyToOne
|
ManyToOne значит, что в таблице Портфолио может быть много продуктов с одним и тем же ID, а в таблице продукт может быть только один продукт (unique key). поправьте меня, если что-то не так.
пробовал связь OneToOne, но тогда нужно, чтоб и в портфолио айдишники продуктов не повторялись.
и еще вопрос: может мне кто-то доступно объяснить в чем разница между Unidirectional и Bidirectional?