Ver Mensaje Individual
  #5 (permalink)  
Antiguo 23/11/2014, 16:29
Avatar de Dundee
Dundee
 
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: Claves primarias compuestas (composite primary key)

Cita:
Iniciado por hhs Ver Mensaje
Lo errores del constructor son debido a que create una clave primaria compuesta asi que necesitas pasarle los valores correpondiente en el constructor:
Código PHP:
Ver original
  1. // Create new child branch.
  2.    $branch = new Branch();
¿Entonces como hago cuando creo una nueva rama que no tiene Id (por que aun no existe) y tiene que generarla con autoincrement?.
Además cuando busco parent, también me da error, lo hago así, y según he visto en varios ejemplos se debe hacer así:
Ojo parent si tiene id y book_id, ya que es un rama existente, por eso le paso los dos valores, por lo que no se por qué peta.
Código PHP:
  $parent_branch $em->getRepository('BranchMainBundle:Branch')->find(array(
     
'id' => $parent_branch_id
     
'book_id' => $book_id
       
)); 
Pero siempre me tira un error como este:
Código PHP:
  Single id is not allowed on composite primary key in entity BranchMainBundleEntityBranch 
Cita:
Iniciado por hhs Ver Mensaje
No puedes hacer esto de arriba. Necesitas crear la logica necesaria para que tu constructor
Código PHP:
Ver original
  1. public function __construct($id = null, $book_id = null) {
  2.     $this->id = $id; // The branch id.
  3.     $this->book_id = $book_id; // The book id.
  4.   }


Me temo que el ultimo error es por que declaras la generación automatica y doctrine considera que estas creando un PK de una sola columna.
Supongo que todo esto es por que estas haciendo pruebas, si es asi, mejor realizar primero pruebas de unidad y luego pruebas funcionales.
No entiendo eso que dices, ¿no puedo hacer exactamente que?, si al crear el objeto envío dos argumentos, el contructor recibe dos argumentos, es lógica que le pase dos al crear el objeto no?. Lo de null ha sido para probar sismplemente , si lo quito obtengo también un error.

Ahora si que me siento un poco confundido con esto, hasta ahora toda había sido relativamente sencillo, pero ya me tocaba sufrir supongo jeje.

Gracias de antemano.
__________________
Videotutoriales de Drupal