【问题标题】:Doctrine: No identifier/primary key specified for原则:没有指定标识符/主键
【发布时间】:2017-04-07 10:55:26
【问题描述】:

所以我已经准备好了所有东西,但我仍然得到:

没有为实体指定标识符/主键 “比斯纳\应用\实体\公司”。每个实体都必须有一个 标识符/主键。

实体:

<?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;

    /* .... */
}

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

【问题讨论】:

    标签: symfony zend-framework doctrine-orm


    【解决方案1】:

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

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

    【讨论】:

    • 确保在添加@后清除缓存。
    • $cacheDriver = new \Doctrine\Common\Cache\ArrayCache(); $cacheDriver->deleteAll();我已经尝试过这样但没有运气,我可能会尝试创建表......
    • 这是缓存
    猜你喜欢
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 2015-07-25
    相关资源
    最近更新 更多