[英]Single id is not allowed on composite primary key in entity AdminBundle\Entity\Comptable
[英]Symfony 3 Doctrine Composite Key: single id is not allowed on composite primary key in entity
我有一個實體
整數列(compositeId)
和一個
字符串列(asin)
我希望兩列都作為復合鍵工作。 所以我在文檔中查看:
但是當我嘗試加載我的存儲庫時
$myEntity = $em->getRepository(MyEntity::class);
我收到此錯誤消息:
實體 AppBundle\Entity\MyEntity 中的復合主鍵上不允許使用單個 id
這是我的實體:
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @Entity(repositoryClass="AppBundle\Repository\MyEntityRepository")
* @Table(name="my_entity")
*/
class MyEntity {
/**
* @Column(type="integer")
* @GeneratedValue()
*/
protected $id;
/**
* @var integer
* @Id
* @Column(type="integer", name="composite_id")
*/
protected $compositeId;
/**
* @var string
* @Id
* @Column(type="string", name="asin")
*/
protected $asin;
/**
* @var string
* @Column(type="string", name="sku")
*/
protected $sku;
/**
* @var string
* @Column(type="string", name="ean")
*/
protected $ean;
/**
* @codeCoverageIgnore
* @return mixed
*/
public function getId() {
return $this->id;
}
/**
* @param mixed $id
*
* @return MyEntity;
*/
public function setId($id) {
$this->id = $id;
return $this;
}
/**
* @codeCoverageIgnore
* @return int
*/
public function getCompositeId() {
return $this->compositeId;
}
/**
* @param int $compositeId
*
* @return MyEntity;
*/
public function setCompositeId($compositeId) {
$this->compositeId = $compositeId;
return $this;
}
/**
* @codeCoverageIgnore
* @return string
*/
public function getAsin() {
return $this->asin;
}
/**
* @param string $asin
*
* @return MyEntity;
*/
public function setAsin($asin) {
$this->asin = $asin;
return $this;
}
/**
* @codeCoverageIgnore
* @return string
*/
public function getSku() {
return $this->sku;
}
/**
* @param string $sku
*
* @return MyEntity;
*/
public function setSku($sku) {
$this->sku = $sku;
return $this;
}
/**
* @codeCoverageIgnore
* @return string
*/
public function getEan() {
return $this->ean;
}
/**
* @param string $ean
*
* @return MyEntity;
*/
public function setEan($ean) {
$this->ean = $ean;
return $this;
}
}
我究竟做錯了什么? 當我在我的 ID 表中刪除 @generatedValue 時,它可以工作。 但我需要在我的 ID 列自動生成值。 我的 ID 列沒有任何@Id 注釋,只有@generatedValue,在我的兩個@Id 列上我沒有任何帶有@generatedValue 的注釋,但我得到了這個錯誤......
Doctrine 僅支持@Id
字段上的@GeneratedValue()
。
此注解是可選的,僅在與@Id 結合使用時才有意義。
您可以使用columnDefinition
作為解決方法,例如
@ORM\Column(type="integer", name="id", columnDefinition="INT AUTO_INCREMENT")
如此處建議: https ://stackoverflow.com/a/34749619/380054
您需要刪除屬性描述中的所有@Id
,除了 protected $id
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.