Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Alors, avant de posté ce sujet, je tiens à signalé que j'ai fais le tour de quelques sujets du même genre mais ils proposent tous la même solution (vider le cache en ligne de commande, manuellement, avoir l'annotation @ORM\Entity(repositoryClass="monBundle\Repository\EntityRepository" dans son Entity).
J'ai essayé ses solutions mais... :(

Sujets vus:
1 - https://openclassrooms.com/forum/sujet/symfony-3-undefined-method-getadverts
2 - https://openclassrooms.com/forum/sujet/symfony-3-26
3 - https://openclassrooms.com/forum/sujet/symfony-2-repository-non-reconnu-29501 (Pour celui-ci, ce serait un bug au niveau de Symfony)
4 - https://zestedesavoir.com/forums/sujet/1352/foire-aux-questions-symfony/?page=2#p23300

Je vous donne mes codes
Le controller.php

<?php
namespace ISIBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;

use ISIBundle\Entity\Eleve;
use ISIBundle\Repository\EleveRepository;
use ISIBundle\Entity\Anneescolaire;
use ISIBundle\Form\EleveType;

use Doctrine\ORM\EntityRepository;

class EleveController extends Controller
{
  public function indexAction(Request $request, $as, $regime)
  {
    $repoEleve = $this->getDoctrine()->getManager()->getRepository('ISIBundle:Eleve');
    $repo = get_class($repoEleve);

    if($regime === 'AC')
    {
      $eleves = $repoEleve->elevesAcademie();
    }
    else {
      $eleves = $repoEleve->elevesCentreFormation();
    }
    return $this->render('ISIBundle:Eleve:index.html.twig', array(
        'asec'   => $request->query->get('as'),
      'eleves' => $eleves,
      'regime' => $regime
    ));
    // return new Response($repo);
  }
}

?>

Et là, le Repository.php

<?php
namespace ISIBundle\Repository;

use Doctrine\ORM\QueryBuilder;
use ISIBundle\Repository;
use ISIBundle\Entity\Eleve;

use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\EntityManagerInterface;

class EleveRepository extends \Doctrine\ORM\EntityRepository
{
  // Récuperation des élèves de l'académie
  public function elevesAcedemie()
  {
    // $elevesAcademie = $this->_em->createQuery('SELECT * FROM ISIBundle:Eleve e WHERE e.matricule LIKE '*A*'');
    $qb = $this->createQueryBuilder('e');
    $qb->where('a.matricule LIKE LIKE '*A*'');
    // return $elevesAcademie->getResult();
    return $qb->getQuery()
              ->getResult();
  }

  // Récuperation des élèves du centre de formation
  public function elevesCentreFormation()
  {
    $elevesCentreFormation = $this->_em->createQuery('');
    return $elevesCentreFormation->getResult();
  }

  // Récupération du dernier matricule enregistré
  public function dernierMatricule()
  {
    $dernierMatricule = $this->_em->createQuery(
      'SELECT
      MAX(DISTINCT(SUBSTRING(SUBSTRING(e.matricule, 1, LENGTH(e.matricule) - 4), 5))) AS plus_grand_matricule
      FROM ISIBundle:Eleve e');

      return $dernierMatricule->getResult();
  }
}
//MAX(DISTINCT(CAST(SUBSTRING(SUBSTRING(e.matricule, 1, LENGTH(e.matricule) - 4), 5) AS SIGNED INTEGER))) AS plus_grand_matricule

?>

Et enfin mon Entity.php

<?php

namespace ISIBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Eleve
 *
 * @ORM\Table(name="eleve", indexes={@ORM\Index(name="contact_pere", columns={"contact_pere"}), @ORM\Index(name="contact_mere", columns={"contact_mere"}), @ORM\Index(name="contact", columns={"contact"})})
 * @ORM\Entity(repositoryClass="ISIBundle\Repository\EleveRepository")
 * @ORM\HasLifecycleCallbacks()
 */
class Eleve
{
  //l'entity fais plus de mille lignes, je ne présente donc que ça définition
}

Ce que je veux

Je veux accéder à la méthode de mon Repository

Ce que j'obtiens

Voici le message que j'obtiens lorsque que je veux accéder à une méthode de mon répository:
Undefined method 'maMethodePersonnelle'. The method name must start with either findBy or findOneBy!

Avec tous ce code (qui a mon sens est bien écrit : le repositoryClass de l'entité bien défini, le Repository lui même dans monBundle\Repository, l'Entity dans monBundle\Entity) je ne comprends pas d'où vient cette erreur.

Pourriez-vous me proposer une solution

3 réponses


Est-ce que quelqu'un a une solution? je suis sur le même problème!!

youstra
Auteur

Mon problème est résolue.
Tu pourrais nous présenter ton code? Histoire de voir ce que tu fais.

@youstra j'ai résolu ce problème là, il me suffit de supprimer le dossier Doctrine qui a été généré lors du mapping. En tout cas, merci!