Doctrine - 缺少主键的值

时间:2015-05-12 17:16:26

标签: sql symfony doctrine-orm primary-key

我有这个实体:

.splash_image{
  left: 0;
  top: 2%;
  overflow: hidden;
  width: 100%;
  z-index: 1;
  height: 100%;
}
.splash_image img{
  width:100%;
  position:absolute;
}
.splash_title{
  color: red;
  z-index: 88;
  position: absolute;
  top: 50%;
  left: 50px;
  right: 0;
  bottom: 0;
  margin: auto;
}
.wrapper{
  width: 50%;
  height: 150px;
  position: relative;
}

我尝试通过$ parser进行结果过滤,如下所示:

/**
 * 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;

...
}

但是Doctrine告诉我:$query = $this->doctrine->getManager()->createQuery( 'SELECT u FROM AppBundle:ParserURLs u WHERE u.parser = :parser') ->setParameter('parser', $this->parser); $result = $query->getResult();

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

1 个答案:

答案 0 :(得分:1)

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

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

其中name =“id”是您DB中字段的名称

如果您的ID有自动增量,则必须添加以下行:

@ORM\GeneratedValue(strategy="AUTO")