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
- 
Vamos a crear un proyecto llamado SpringBoot01 para esto, -creamos un proyecto maven y configuramos el build path como vimos en el tutoria...
- 
1) configurar datos de conexion app/config/parameters.yml # This file is auto-generated during the composer install parameters: da...
- 
por consola y desde la raiz de tu proyecto php artisan --version
 
 
 
No hay comentarios:
Publicar un comentario