Cita:
Iniciado por SirDuque Perdón me quede con "claves compuestas"
En ese caso quita @ORM\Id de $book_id ya que es un FK y no un Primary de la entidad Branch.
Y del constructor quita $this->id = $id
Saludos
No lo entiendo bien, pero aún así sale con error:
Versión reducido Xd.
Código PHP:
class Branch {
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Id
*/
private $id;
/**
* @var intenger
*
* @ORM\Column(name="book_id", type="integer", nullable=false)
* @ORM\ManyToOne(targetEntity="Book", inversedBy="Branch")
*/
private $book_id;
public function __construct($book_id) {
//$this->id = $id; // The branch id.
$this->book_id = $book_id; // The book id.
}
}
Versión reducida de controller.
Código PHP:
public function createBranchAction(Request $request, $book_id, $parent_branch_id) {
$em = $this->getDoctrine()->getManager();
$parent_branch = $em->getRepository('BranchMainBundle:Branch')->find(array(
'id' => $parent_branch_id,
'book_id' => $book_id
));
// Actual book
$actual_book = $em->getRepository('BranchMainBundle:Book')->find($book_id);
// Presist book
$em->persist($actual_book);
}
El constructor no debe llevar las dos propiedades que forman la calve primaria Id + BookId ?. Book_id no es ningun Foreign Key sino parte de la calve primaria compuesta.
La verdad que estoy un poco hecho un lío.
Gracias de antemano.