答案 0 :(得分:31)
允许按关系查询,但您必须在那里传递标识符。目前尚不支持按对象查询,只能将其设为2.1。
<?php
// $em instanceof EntityManager, $user instanceof Models\User
$comments = $em->getRepository('Models\Comment')
->findBy(array('user' => $user->getId(), 'public' => true));
答案 1 :(得分:0)
不幸的是,我不认为通过存储库对象直接支持关系查询。
在这种情况下,您最好使用findByUser方法编写自定义存储库类。
<?php
namespace App\Domain\Repository;
use Doctrine\ORM\EntityRepository,
App\Domain\Entity\User;
class CommentRepository extends EntityRepository
{
public function findByUser(User $user)
{
// add QueryBuilder code here
}
}
不要忘记更新您的Comment实体以使用自定义存储库:
<?php
namespace App\Domain\Entity;
/**
* @Entity(repositoryClass="App\Domain\Repository\CommentRepository")
*/
class Comment
{
// entity definition
}
答案 2 :(得分:0)
对于symfony 4.1,此代码对我有用。
$comments = $this->getDoctrine()
->getRepository(Models\Comment::class)
->findBy(
['user' => $user->getId(), 'public' => true]
);