Doctrine - 主键缺失值

Doctrine - Missing value for primary key

我有这个实体:

/**
 * Class ParserURLs
 * @package AppBundle\Entity
 * @ORM\Entity(repositoryClass="AppBundle\Entity\ParserURLsRepository")
 */
class ParserURLs
{

/**
 * @ORM\Id
 * @ORM\Column(type="string", length=50)
 */
protected $external_id;

/**
 * @ORM\Id
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Parser")
 */
protected $parser;

...
}

任何我尝试通过 $parser 过滤的结果,如下所示:

$query = $this->doctrine->getManager()->createQuery(
            'SELECT u
            FROM AppBundle:ParserURLs u
            WHERE u.parser = :parser')
->setParameter('parser', $this->parser);

$result = $query->getResult();

但是 Doctrine 告诉我:Missing value for primary key parser on AppBundle\Entity\ParserURLs

我认为问题是因为多个主键 external_id-parser 但现在,我只想按其中一个进行搜索。在 Doctrine 中不可能吗?我需要这个主键。 提前谢谢你

您的注释中似乎缺少名称 属性。您的定义应如下所示:

/**
 * @var string
 *
 * @ORM\Column(name="id", type="string", length=9)
 * @ORM\Id
 */
private $id;

其中 name="id" 是您数据库中字段的名称

如果您的 ID 具有自动递增功能,则必须添加此行:

@ORM\GeneratedValue(strategy="AUTO")