学说:没有为指定的 identifier/primary 键

Doctrine: No identifier/primary key specified for

所以我已经设置好了所有内容,但我仍然得到:

No identifier/primary key specified for Entity "Bisna\Application\Entity\Company". Every Entity must have an identifier/primary key.

实体:

<?php
namespace Bisna\Application\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
 * Company
 *
 * @ORM\Table(name="companies")
 * @ORM\Entity
 */
class Company{

    /**
     * @var integer $id
     *
     * @ORM\Id
     * ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    protected $id;

    /**
     * @var string $industry
     *
     * @ORM\ManyToOne(targetEntity="CompanyIndustry", inversedBy="company_industry")
     * @ORM\JoinColumn(name="industry_id", referencedColumnName="id", nullable=false)
     */
    protected $industry;

    /**
     * @var string $billingAddress
     *
     * @ORM\ManyToOne(targetEntity="BillingAddress", inversedBy="billing_addresses")
     * @ORM\JoinColumn(name="billing_address_id", referencedColumnName="id", nullable=false)
     */
    protected $billingAddress;

    /**
     * @var string $companyName
     *
     * @ORM\Column(name="companyName", type="string", length=255, nullable=false)
     */
    protected $companyName;

    /**
     * @var string $website
     *
     * @ORM\Column(name="website", type="string", length=255, nullable=true)
     */
    protected $website;

    /**
     * @var string $address
     *
     * @ORM\Column(name="address", type="string", length=255, nullable=true)
     */
    protected $address;

    /**
     * @var string $employeesNumber
     *
     * @ORM\Column(name="employees_number", type="string", length=255, nullable=true)
     */
    protected $employeesNumber;

    /**
     * @var string $streetNumber
     *
     * @ORM\Column(name="street_number", type="string", length=255, nullable=true)
     */
    protected $streetNumber;

    /**
     * @var string $street
     *
     * @ORM\Column(name="street", type="string", length=255, nullable=true)
     */
    protected $street;

    /**
     * @var string $city
     *
     * @ORM\Column(name="city", type="string", length=255, nullable=false)
     */
    protected $city;

    /**
     * @var string $cityVarname
     *
     * @ORM\Column(name="city_varname", type="string", length=255, nullable=true)
     */
    protected $cityVarname;

    /**
     * @var string $state
     *
     * @ORM\Column(name="state", type="string", length=255, nullable=true)
     */
    protected $state;

    /**
     * @var string $stateVarname
     *
     * @ORM\Column(name="state_varname", type="string", length=255, nullable=true)
     */
    protected $stateVarname;

    /**
     * @var string $stateCode
     *
     * @ORM\Column(name="state_code", type="string", length=255, nullable=true)
     */
    protected $stateCode;

    /**
     * @var string $postalCode
     *
     * @ORM\Column(name="postal_code", type="string", length=255, nullable=true)
     */
    protected $postalCode;

    /**
     * @var string $country
     *
     * @ORM\Column(name="country", type="string", length=255, nullable=true)
     */
    protected $country;

    /**
     * @var string $countryVarname
     *
     * @ORM\Column(name="country_varname", type="string", length=255, nullable=true)
     */
    protected $countryVarname;

    /**
     * @var string $countryCode
     *
     * @ORM\Column(name="country_code", type="string", length=255, nullable=true)
     */
    protected $countryCode;

    /**
     * @var string $latitude
     *
     * @ORM\Column(name="latitude", type="string", length=255, nullable=true)
     */
    protected $latitude;

    /**
     * @var string $longitude
     *
     * @ORM\Column(name="longitude", type="string", length=255, nullable=true)
     */
    protected $longitude;

    /**
     * @var string $email
     *
     * @ORM\Column(name="email", type="string", length=255, nullable=true)
     */
    protected $email;

    /**
     * @var string $password
     *
     * @ORM\Column(name="password", type="string", length=255, nullable=true)
     */
    protected $password;

    /**
     * @var string $firstname
     *
     * @ORM\Column(name="firstName", type="string", length=255, nullable=false)
     */
    protected $firstname;

    /**
     * @var string $lastname
     *
     * @ORM\Column(name="lastName", type="string", length=255, nullable=false)
     */
    protected $lastname;

    /**
     * @var Collection $jobs
     *
     * @ORM\OneToMany(targetEntity="CompanyJob", mappedBy="company", cascade={"persist", "remove"})
     * @ORM\OrderBy({"created" = "ASC"})
     */
    protected $jobs;

    /**
     * @var string $activationCode
     *
     * @ORM\Column(name="activationCode", type="string", length=255, nullable=true)
     */
    protected $activationCode;

    /**
     * @var string $resetPasswordCode
     *
     * @ORM\Column(name="resetPasswordCode", type="string", length=255, nullable=true)
     */
    protected $resetPasswordCode;

    /**
     * @var string $status ['activation', 'active', 'inactive']
     *
     * @ORM\Column(name="status", type="string", length=255, nullable=false)
     */
    protected $status;

    /**
     * @var datetime $created
     *
     * @ORM\Column(name="created", type="datetime", nullable=false)
     */
    protected $created;

    /* .... */
}

我还没有制作表格,但我仍然不明白为什么我会收到这个错误,因为我什么都有。有什么想法吗?

可能是因为您在 $id 属性 的 @ORM\Column 注释之前错过了 @

您应该考虑使用 Yaml 原则映射。这是将实体与数据库列定义分开的好方法。此外,您的 IDE 应该验证 Yaml 内容,而它可能不会将 PHP 评论验证为 PHP 代码。