В моем хранилище данных я создал функцию:
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!






Вы должны внедрить свой репозиторий в свой контроллер:
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 не работает? Подсказка: это не так.
Можешь показать свой репозиторий?
В вашей функции myData вы используете переменную с именем $data, но затем в $result вы используете $qb... Вы должны изменить $data на $qb
Спасибо !, это была просто ошибка типа здесь в вопросе
Проверьте отображение вашей формы. Данные неправильно связаны с DataRepository, поэтому getRepository просто возвращает общий репозиторий.