时间:2011-01-06 19:41:27

标签: php doctrine-orm

3 个答案:

答案 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]
);