Как я могу использовать пользовательский метод в Symfony?

В моем хранилище данных я создал функцию:

  public function myData(){
    $data = $this->createQueryBuilder('data')
    ->leftJoin('data.fields', 'f')
    ->andWhere('f.name = :field')
    ->setParameter('field', 'company');
    $result = $data->getQuery()->execute();
  
    return $result;
}

В моем контроллере я хочу использовать эту функцию:

class PagesController extends AbstractController
{

 public function __construct(EntityManagerInterface $em) {
    $this->em = $em;
}


/**
 * @Route("/page", name = "page", methods = {"POST", "GET"})
 */
public function page(Request $request)
{

$data = $this->em->getRepository('App\\Entity\\Data')->myData();

Но я получаю сообщение об ошибке:

Неопределенный метод 'myData'. Имя метода должно начинаться либо с findBy, findOneBy или countBy!

Проверьте отображение вашей формы. Данные неправильно связаны с DataRepository, поэтому getRepository просто возвращает общий репозиторий.

Cerad 22.11.2022 14:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
56
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Вы должны внедрить свой репозиторий в свой контроллер:

class PagesController extends AbstractController
{

 public function __construct(private DataRepository $dataRepository) {}


/**
 * @Route("/page", name = "page", methods = {"POST", "GET"})
 */
public function page(Request $request)
{

$data = $this->dataRepository->myData();

И можете ли вы объяснить, как это будет работать, если getRepo не работает? Подсказка: это не так.

Cerad 22.11.2022 14:03

Можешь показать свой репозиторий?

tsdevelopment 23.11.2022 08:37

В вашей функции myData вы используете переменную с именем $data, но затем в $result вы используете $qb... Вы должны изменить $data на $qb

Спасибо !, это была просто ошибка типа здесь в вопросе

peace_love 24.11.2022 07:35

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