所以我有两个实体帖子和评论 1个帖子
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use App\Utils\Slugger;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\HttpFoundation\File\UploadedFile;
/**
* @ORM\Entity(repositoryClass="App\Repository\PostRepository")
*/
class Post
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255,unique=true)
*/
private $title;
我有更多的字段,但不是必须要解决的问题。
和评论实体
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="App\Repository\CommentsRepository")
*/
class Comments
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Post")
*/
private $post;
在这个实体中,我与ManyToOne有关系,一切都很好。
所以我的问题是我试图在PostRepository上获取所有帖子评论(我认为没有必要为一种方法创建CommentRepository) 这是我的PostRepositoy
<?php
namespace App\Repository;
use App\Entity\Post;
use App\Entity\Comments;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Symfony\Bridge\Doctrine\RegistryInterface;
class PostRepository extends ServiceEntityRepository
{
public function __construct(RegistryInterface $registry)
{
parent::__construct($registry, Post::class);
}
public function findComments($post)
{
return $this->createQueryBuilder('p')
->leftJoin(Comments::class,'c')
->andWhere('c.post = :val')
->setParameter('val', $post)
->orderBy('p.id', 'ASC')
->getQuery()
->getResult()
;
}
有人可以帮助我吗?我可以使用dql或createQuery并使用其他选项,但是我想这样做,但是我认为查询不正确。