Symfony API平台-未为类型的资源定义标识符

Symfony API平台-未为类型的资源定义标识符,symfony,api-platform.com,Symfony,Api Platform.com,我有一个由iso_代码属性标识的条令实体类: /** * @ApiResource( * graphql={ * "item_query", * "collection_query" * } * ) * * @ORM\Entity(repositoryClass="App\Repository\LanguageRepository") * @ORM\HasLifecycleCallbacks */ class Languag

我有一个由iso_代码属性标识的条令实体类:

/**
 * @ApiResource(
 *     graphql={
 *          "item_query",
 *          "collection_query"
 *     }
 * )
 *
 * @ORM\Entity(repositoryClass="App\Repository\LanguageRepository")
 * @ORM\HasLifecycleCallbacks
 */
class Language extends BaseEntity
{
    /**
     * @var string
     * @ApiProperty(identifier=true)
     *
     * @ORM\Id()
     * @ORM\Column(type="string", length=2, unique=true)
     */
    private $iso_code;

    public function getId(): string
    {
        return $this->iso_code;
    }

    public function getIsoCode(): string
    {
        return $this->iso_code;
    }
}

当我试图通过GET requests
/api/v2/languages?pages=1
访问列表时,我遇到了
“没有为类型为\”App\\Entity\\Language\”的资源定义标识符”的错误

当我试图通过GET请求访问项目时,我得到了无效的标识符值或配置

配置: -api平台v2.5.6 -PHP7.4
-symfony 4.4

将标识符的名称更改为
$id
成功了

但我不明白为什么不能使用
$iso_code

您必须添加

App\Entity\Language
  properties: 
    id: 
      identifier: false
    iso_code:
      identifier: true 

通过将identifier@ApiProperty(identifier=true)设置在
getter函数

很抱歉,它是Symfony中api包
的1.2.2。每个enetity都必须有一个标识符/主键,在您的情况下,必须有两个变量,一个是ID,一个是GeneratedValue作为注释,另一个是iso代码。每个api平台之外的工作,iso_代码都是唯一的主键。我在文档中没有看到我必须使用GeneratedValue的任何地方?