symfony relacion inversa OneToMany
en la practica existirá una relación (definida en la tabla) de tipo ManyToOne
pero cada relación se puede pensar también como de ida y vuelta, o en ambos sentidos.
Asi como muchas GenusNote se pueden referir a una Genus. (ManyToOne)
Una Genus puede tener muchos GenusNote (oneToMany)
Lo que nos permitirá obtener las notes desde genus.
este cambio no afectará la estructura de las tablas por lo que no se necesitará crear el archivo de migration.
class Genus{
...
/**
* @ORM\OneToMany(targetEntity="GenusNote", mappedBy="genus")
*/
private $notes;
public function __construct()
{
$this->notes = new ArrayCollection();
}
public function getNotes(){
return $this->notes;
}
...
}
notar que no se agregó el método setNotes(..)
ya que el seteo se hace sólo del lado del propietario.
en GenusNote agregamos esta pequeña modificación:
class GenusNote
{
...
/**
* @ORM\ManyToOne(targetEntity="Genus", inversedBy="notes")
* @ORM\JoinColumn(nullable=false)
*/
private $genus;
...
}
en el controller podemos tener algo asi:
class GenusController extends Controller{
...
/**
* @Route("/list-notes-by-genus")
*/
public function listAction()
{
$em = $this->getDoctrine()->getManager();
$genuses = $em->getRepository("AppBundle\Entity\Genus")->findAll();
foreach($genuses as $genus){
foreach ($genus->getNotes() as $note) {
dump($note);
}
}
return new Response("hecho!");
}
...
}
Suscribirse a:
Enviar comentarios (Atom)
linux ubuntu mint actualizar chrome
desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable
-
por consola y desde la raiz de tu proyecto php artisan --version
-
en nuestro proyecto creamos una carpeta llamada donde estaran todas nuestras clases, por ejemplo una llamada: MiApp adentro de esta irian b...
-
Integridad al nivel de la base de datos Oracle Oracle valida la integridad de la base de datos y presenta los siguientes mensajes de erro...
No hay comentarios:
Publicar un comentario