Symfony 3.4: метод репозитория не найден

я хочу добавить метод в свой класс репозитория; это мой класс репозитория 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);

метод репозитория, когда я его вызываю, не найден! Обратите внимание: я не создал объекты после добавления репозитория
пожалуйста, помогите и спасибо!

Сначала убедитесь, что вы не получаете нулевой объект при использовании $this->getDoctrine()->getRepository('techeventBundle:Panier'‌​);

Tyr 23.03.2019 19:37

$panier = $this->getDoctrine()->getRepository('techeventBundle:Panier'‌​)->find(1); не показывает никакой ошибки

YassinovTrabajaa 23.03.2019 19:43

Он не отображает ошибку для поиска, потому что вы получаете репозиторий сущностей по умолчанию. Ваша сущность неправильно сопоставлена ​​с репозиторием. Возможно, потому что у вас есть старые сгенерированные файлы сопоставления в Resources/config/doctrine, которые мешают аннотациям.

Cerad 23.03.2019 21:10

@Cerad какое решение?

YassinovTrabajaa 23.03.2019 21:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
4
1 496
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте с:

$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 довольно крут, но я не думаю, что проблема здесь. И вы пропускаете закрытие ) и точку с запятой.

Cerad 23.03.2019 21:11

Пожалуйста, прочитайте обновленный ответ со скриншотом из официальной документации.

sensorario 24.03.2019 01:22

Рад, что у вас все заработало, но я просто хотел указать, что нет никакой разницы между $this->getDoctrine()->getRepository и $this->getDoctrine()-getManager()>getRepository. В какой-то момент вы исправили проблему с отображением репозитория, не осознавая этого.

Cerad 24.03.2019 15:09

Другие вопросы по теме