я хочу добавить метод в свой класс репозитория; это мой класс репозитория PanierRepository: (путь: src/techeventBundle/Repository/PanierRepository.php)
namespace techeventBundle\Repository;
use Doctrine\ORM\EntityRepository;
class PanierRepository extends EntityRepository
{
public function findAllOrderedByName($iduser){}
}
и это мой класс сущностей под названием "Panier": (Путь: src/techeventBundle/Entity/Panier.php)
namespace techeventBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Panier
*
* @ORM\Table(name = "panier", indexes = {@ORM\Index(name = "userid", columns = {"userid"})})
* @ORM\Entity(repositoryClass = "techeventBundle\Repository\PanierRepository")
*/
class Panier
{
и именно здесь я хочу вызвать этот метод репозитория в контроллере другого пакета, и я уже включил объект (используйте techeventBundle\Entity\Panier;): (Путь: src/reservationBundle/Controller/DefaultController.php)
$panier = $this->getDoctrine()->getRepository('techeventBundle:Panier')->findAllOrderedByName($iduser);
метод репозитория, когда я его вызываю, не найден!
Обратите внимание: я не создал объекты после добавления репозитория
пожалуйста, помогите и спасибо!
$panier = $this->getDoctrine()->getRepository('techeventBundle:Panier')->find(1); не показывает никакой ошибки
Он не отображает ошибку для поиска, потому что вы получаете репозиторий сущностей по умолчанию. Ваша сущность неправильно сопоставлена с репозиторием. Возможно, потому что у вас есть старые сгенерированные файлы сопоставления в Resources/config/doctrine, которые мешают аннотациям.
@Cerad какое решение?




Попробуйте с:
$this->getDoctrine()->getManager()->getRepostory( ...
наконец... ваш код должен быть:
$panier = $this->getDoctrine()
->getManager()
->getRepository('techeventBundle:Panier')
->findAllOrderedByName($iduser);
или
$panier = $this->getDoctrine()
->getManager()
->getRepository(techeventBundle\Entity\Panier::class)
->findAllOrderedByName($iduser);
Довольно новый ... синтаксис в php довольно крут, но я не думаю, что проблема здесь. И вы пропускаете закрытие ) и точку с запятой.
Пожалуйста, прочитайте обновленный ответ со скриншотом из официальной документации.
Рад, что у вас все заработало, но я просто хотел указать, что нет никакой разницы между $this->getDoctrine()->getRepository и $this->getDoctrine()-getManager()>getRepository. В какой-то момент вы исправили проблему с отображением репозитория, не осознавая этого.
Сначала убедитесь, что вы не получаете нулевой объект при использовании
$this->getDoctrine()->getRepository('techeventBundle:Panier');