Когда я изучал Symfony, у меня возникла проблема с пользовательским запросом в DQL, там была ссылка на документ: https://symfony.com/doc/current/doctrine.html#querying-with-dql-or-sql Я сделал такую же функцию, как эта:
<?php
namespace App\Repository;
use App\Entity\CatPost;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Symfony\Bridge\Doctrine\RegistryInterface;
/**
* @method CatPost|null find($id, $lockMode = null, $lockVersion = null)
* @method CatPost|null findOneBy(array $criteria, array $orderBy = null)
* @method CatPost[] findAll()
* @method CatPost[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class CatPostRepository extends ServiceEntityRepository
{
public function __construct(RegistryInterface $registry)
{
parent::__construct($registry, CatPost::class);
}
public function findAllCategoriesConnectedToPost($id) :array
{
$entityManager = $this->getEntityManager();
$query = $entityManager->createQuery(
'SELECT cat.id_cat
FROM App\Entity\CatPost cat
WHERE cat.id_post = :idPost'
);
$query->setParameter('idPost', $id);
return $query->execute();
}
}
Класс сущности:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="App\Repository\CatPostRepository")
*/
class CatPost
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="integer")
*/
private $id_post;
/**
* @ORM\Column(type="integer")
*/
private $id_cat;
public function getId()
{
return $this->id;
}
public function getIdPost(): ?int
{
return $this->id_post;
}
public function setIdPost(int $id_post): self
{
$this->id_post = $id_post;
return $this;
}
public function getIdCat(): ?int
{
return $this->id_cat;
}
public function setIdCat(int $id_cat): self
{
$this->id_cat = $id_cat;
return $this;
}
}
И затем я хочу использовать его в своем контроллере следующим образом:
/App/Controller/ArticleController
$categories = $this->getDoctrine()
->getRepository(CatPost::class)
->findAllCategoriesConnectedToPost($id);
var_dump($categories);
die();
В результате я получил пустой массив, и PhpStorm говорит мне, что "Метод не найден "У вас есть идеи, как это исправить?