Symfony 使用IN for multiple attribute连接两个表

Symfony 使用IN for multiple attribute连接两个表,symfony,doctrine-orm,Symfony,Doctrine Orm,我有两张像这样的桌子 书桌 class BookData { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * * @ORM\ManyToMany(targetEntity="Acme\TopBundle\Entity\AuthorData") * @ORM\Jo

我有两张像这样的桌子

书桌

class BookData
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 *
 * @ORM\ManyToMany(targetEntity="Acme\TopBundle\Entity\AuthorData")
 * @ORM\JoinColumn(name="authorId", referencedColumnName="authorId",onDelete="SET NULL")
 */

private $authorId;
作者表

class AuthorData
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @ORM\Column(type="string",unique=true,nullable=true)
 */
private $authorId;
一个图书行可以有多个$authorID

然后,我想选择至少有一本书的作者

$query = $em->createQuery(
        "SELECT n.name FROM AcmeTopBundle:AuthorData a 
        INNER JOIN AcmeTopBundle:BookData b
        Where b.authorId IN b.authorId
            ");
不管它怎么说

[Syntax Error] line 0, col 112: Error: Expected Doctrine\ORM\Query\Lexer::T_OPEN_PARENTHESIS, got 'a'
我该怎么做?

必须将“In”括在括号中,因此它不是有效的语法

更好的方法是在书和作者之间使用。然后可以使用内部联接从结果中删除任何没有作者的书籍

select a from AcmeTopBundle:AuthorData a JOIN a.books

谢谢,我能解决我的问题,这就是我想要的信息。