ya venimos usando repositorios referidos a las entidades:
$em=$this->getDoctrine()->getRepository("Appundle:GenusNote");
a partir del cual podemos usar las funciones findAll() ó findOneBy()
que pasaría si quisieramos seguir usando esas funciones pero además agregar nuevas?
vamos a crear nuestro propio Repository:
en src/AppBundle/creamos la carpeta Repository y adentro la clase GenusNoteRepository
namespace AppBundle\Repository;
use AppBundle\Entity\Genus;
use Doctrine\ORM\EntityRepository;
class GenusNoteRepository extends EntityRepository{
/**
* @param Genus $genus
* @return GenusNote[]
*/
public function findAllRecentNotesForGenus(Genus $genus){
return $this->createQueryBuilder('recent_genus_note')
->andWhere('recent_genus_note.genus = :genus')
->setParameter('genus', $genus)
->andWhere('recent_genus_note.created > :recentDate')
->setParameter('recentDate', new \DateTime('-3 months'))
->getQuery()
->execute();
}
}
donde recent_genus_note: es el alias de la query
para enlazar este repository con la entidad le informamos a esta de su existencia a traves de esta
modificación:
en GenusNote
/**
* @ORM\Entity(repositoryClass="AppBundle\Repository\GenusNoteRepository")
* @ORM\Table(name="genus_note")
*/
class GenusNote
{
luego ya podemos usar ese metodo desde el controller:
class GenusController extends Controller{
...
/**
* @Route("/list-notes-from-repo")
*/
public function list2Action()
{
$em = $this->getDoctrine()->getManager();
// replace this example code with whatever you need
$genuses = $em->getRepository("AppBundle:Genus")->findAll();
$gnrep = $em->getRepository("AppBundle:GenusNote");
foreach($genuses as $genus){
echo ("*** ".$genus->getName()." ***<br>");
$notes = $gnrep->findAllRecentNotesForGenus($genus);
if($notes){
foreach ($notes as $note) {
echo ($note->getNote()."<br>");
}
}else{
echo ("no se encontraron notas<br>");
}
//dump($genus->getNotes());
}
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