Symfony 3.3, ich nach der Dokumentation https://symfony.com/doc/current/doctrine/repository.htmlBenutzerdefinierte Repository funktioniert nicht
$entityManager = $this->getDoctrine()->getManager();
$users = $entityManager->getRepository(Users::class)->findAllOrderedByName();
ich Ausnahme:
BadMethodCallException:
Undefined method 'findAllOrderedByName'. The method name must start with either findBy or findOneBy!
at vendor\doctrine\orm\lib\Doctrine\ORM\EntityRepository.php:226
at Doctrine\ORM\EntityRepository->__call('findAllOrderedByName', array())
(src\AppBundle\Controller\DefaultController.php:28)
at Doctrine\ORM\EntityRepository->findAllOrderedByName()
(src\AppBundle\Controller\DefaultController.php:28)
at AppBundle\Controller\DefaultController->indexAction(object(Request))
at call_user_func_array(array(object(DefaultController), 'indexAction'), array(object(Request)))
(var\cache\dev\classes.php:4453)
at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
(var\cache\dev\classes.php:4408)
at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
(vendor\symfony\symfony\src\Symfony\Component\HttpKernel\Kernel.php:171)
at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
(web\app_dev.php:29)
Benutzer Einheit:
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Users
*
* @ORM\Table(name="users")
* @ORM\Entity(repositoryClass="AppBundle\Repository\UsersRepository")
*/
class Users
{
...
}
UsersRepository
namespace AppBundle\Repository;
use AppBundle\Entity\Users;
use Doctrine\ORM\EntityRepository;
/**
* Created by PhpStorm.
* User: Hett
* Date: 21.07.2017
* Time: 14:25
*/
class UsersRepository extends EntityRepository
{
public function findAllOrderedByName()
{
return $this->getEntityManager()
->createQueryBuilder()
->select("u")
->from(Users::class, "u")
->orderBy("name")
->getQuery()
->getArrayResult();
}
}
Wie ich verstehe $entityManager->getRepository(Users::class)
zurückgeben Standard EntiryRepository. Warum? Was ist mein Fehler?
UPD: Ich habe versucht, Cache zu löschen, aber es hat keine Wirkung:
[email protected] MINGW64 /c/www/symfony (master)
$ ./bin/console cache:clear
// Clearing the cache for the dev environment with debug
// true
[WARNING] Calling cache:clear without the --no-warmup option is deprecated
since version 3.3. Cache warmup should be done with the cache:warmup
command instead.
[OK] Cache for the "dev" environment (debug=true) was successfully cleared.
[email protected] MINGW64 /c/www/symfony (master)
$ ./bin/console doctrine:cache:clear-metadata
Clearing ALL Metadata cache entries
Successfully deleted cache entries.
In der Regel handelt es sich um ein Entity-to-Repository-Mapping-Problem. Stellen Sie sicher, dass Sie unter Resources/config/doctrine keine alten Mapping-Dateien haben. Stellen Sie sicher, dass Sie den Cache löschen. Gelegentlich hilft auch das Singen von Hey Jude bei Vollmond. – Cerad
@Cerad bereits versucht, aber es löst nicht Problem (Ich aktualisierte meinen Beitrag) – Hett
Haben Sie mehrere Entity Manager? (aus Gründen der Übersichtlichkeit :-)) –