如何在 Doctrine (Symfony 3) 实体中设置列位置
Posted
技术标签:
【中文标题】如何在 Doctrine (Symfony 3) 实体中设置列位置【英文标题】:How to set column position in Doctrine (Symfony 3) Entity 【发布时间】:2016-07-09 19:06:01 【问题描述】:我有一个名为 Order 的实体,它与用户实体具有 OneToMany 关系。
/**
* Class Order
*
* @ORM\Entity(repositoryClass="AppBundle\Repository\OrderRepository")
* @ORM\Table(name="orders")
*
* Defines the properties of the Order entity to represent the orders.
*/
class Order
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var User $user
*
* @ORM\ManyToOne(
* targetEntity="User",
* inversedBy="orders"
* )
* @ORM\JoinColumn(
* name="user_id",
* referencedColumnName="id"
* )
*/
protected $user;
// other columns ..
当我运行它时,它会在表的末尾创建一个 user_id 列。
是否可以在 ID 列之后创建此列?
我试过了:
..
*
* @ORM\ManyToOne(
* targetEntity="User",
* inversedBy="orders"
* )
* @ORM\JoinColumn(
* name="user_id",
* referencedColumnName="id"
* )
*
* @Column(
* columnDefinition="INT NOT NULL AFTER `id`"
* )
但我得到一个错误:
[Doctrine\Common\Annotations\AnnotationException]
[Semantical Error] The annotation "@Column" in property AppBundle\Entity\Order::$user was never imported. Did you maybe forget to add a "use" statement for this annotation?
【问题讨论】:
【参考方案1】:您忘记了 @Column
注释中的 ORM
命名空间,但这不会解决您的主要问题。只有将columnDefinition
应用到@ORM\JoinColumn
注释上,columnDefinition
才能做你想做的事。
【讨论】:
以上是关于如何在 Doctrine (Symfony 3) 实体中设置列位置的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Symfony 2 / Doctrine 中启用 ENUM
如何在 Symfony 4 上配置 Doctrine 以使用 yaml 映射
Symfony 3 - Doctrine 2 - 在 oneToMany 关系上的 orderBy 不起作用
如何在 symfony 中更新新版本的 Doctrine2 和 ORM?
Symfony 2.7 / 3 - Doctrine:您请求了一个不存在的服务“fos_user.doctrine_registry”