Le nom de la méthode doit commencer par findBy ou findOneBy! (exception non interceptée)
Je les ai vérifié déjà cette mais mon erreur semble être différent.
Im obtenir cette erreur:
[2012-05-07 14:09:59] request.CRITICAL: BadMethodCallException: Undefined method 'findOperariosordenados'. The method name must start with either findBy or findOneBy! (uncaught exception) at /Users/gitek/www/uda/vendor/doctrine/lib/Doctrine/ORM/EntityRepository.php line 201 [] []
C'est mon OperarioRepository:
<?php
namespace Gitek\UdaBundle\Entity;
use Doctrine\ORM\EntityRepository;
/**
* OperarioRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class OperarioRepository extends EntityRepository
{
public function findOperariosordenados()
{
$em = $this->getEntityManager();
$consulta = $em->createQuery('SELECT o FROM GitekUdaBundle:Operario o
ORDER BY o.apellidos, o.nombre');
return $consulta->getResult();
}
}
Ce mon contrôleur, où j'appelle le référentiel:
$em = $this->getDoctrine()->getEntityManager();
$operarios = $em->getRepository('GitekUdaBundle:Operario')->findOperariosordenados();
Enfin, c'est mon Entité:
<?php
namespace Gitek\UdaBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Gitek\UdaBundle\Entity\Operario
*
* @ORM\Table(name="Operario")
* @ORM\Entity(repositoryClass="Gitek\UdaBundle\Entity\OperarioRepository")
*/
class Operario
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $nombre
*
* @ORM\Column(name="nombre", type="string", length=255)
*/
private $nombre;
----
----
Toute aide ou idée??
Merci d'avance
EDIT: Fonctionne très bien sur l'environnement de dev, mais pas dans l'environnement de prod.
OriginalL'auteur Kioko Kiaza | 2012-05-07
Vous devez vous connecter pour publier un commentaire.
Vous êtes déjà dans une reposoritory, vous n'avez pas besoin de ré-obtenir.
Toutes les méthodes dans un *Référentiel peut être utilisé qu'avec
$this
Également, note
return $this->findBy();
peut être utilisé.findBy()
a trois paramètres, le premier est un tableau des relations et des getters, la seconde est pour la commande, voirDoctrine\ORM\EntityRepository
codeVotre code
Je vous suggère tout simplement faire:
Vous avez seulement besoin
EntityRepository
Un de mes dépôts:
Choses à noter:
Order
a une relation comme$owner
à l'aide de laUser
Entité$array = $reposiroty->getOneUnhandledContainerCreate(Query::HYDRATE_ARRAY)
ContainerCreateOrder
est une étendue deOrder
dans un@ORM\InheritanceType("SINGLE_TABLE")
. Tout à fait hors de portée de cette question.Il pourrait être utile:
OriginalL'auteur renoirb
Avez-vous vider votre cache?
php app/console cache:clear --env=prod --no-debug
OriginalL'auteur ilanco
Mon
app/config/config_prod.yml
dispose d'un cache pilote spécifié pour la doctrine :J'ai vidé cache APC à l'aide de ces appels de fonction :
Et vidé
app/cache/
répertoire.Mais j'ai continué à obtenir cette erreur dans l'environnement de prod alors que tout allait bien dans l'environnement de dev.
J'ai finalement redémarré mon serveur virtuel et qui a fait le tour.
Ce qui m'amène à penser à un problème de cache. La prochaine fois je vais essayer de (gracefuly) redémarrer le serveur web uniquement, qui permet également d'effacer le cache (php - un gracieux redémarrer Apache clair APC? - Débordement De Pile)
Sinon, le réglage de
apc.stat = 1
(http://php.net/manual/en/apc.configuration.php#ini.apc.stat) dans/etc/php5/apache2php.ini
semble également être une bonne idée, comme suggéré ici : avons-nous besoin de redémarrer apache + APC après la nouvelle version de déploiement de l'application?Mise à JOUR
Mon serveur de développement APC a installé et pas APCu. Les deux premiers appels à
apcu_clear_cache()
ont été à l'origine d'une erreur Fatale de PHP, qui à son tour empêché le cache APC d'être effacé.Afin de vérifier qui cache votre système utilise avant d'émettre des appels à
apcu_clear_cache()
ouapc_clear_cache()
. Après cela, pas besoin de redémarrer la machine virtuelle ni de du serveur web de vider le cache et de se débarrasser de ces méchants exception.Ajoutées dans
if
blocs à exécuter APC ou APCu des fonctions spécifiques.OriginalL'auteur Daishi