doctrine:schema:update不遵守列顺序

时间:2014-06-10 18:41:26

标签: php mysql symfony doctrine-orm

我在Symfony2中有Entity

<?php

namespace Project\UserBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Users
 *
 * @ORM\Table(name="users")
 * @ORM\Entity
 */
class Users
{
    /**
     * @var integer
     *
     * @ORM\Column(name="user_id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $userId;


    /**
     * @var integer
     *
     * @ORM\Column(name="test", type="integer", nullable=false)
     */
    private $test;
}

我在{{userId}}和{{test}}之间添加以下行:

/**
 * @var integer
 *
 * @ORM\Column(name="superbanana", type="integer", nullable=false)
 */
private $superbanana;

然后我在控制台中执行:

php app/console doctrine:schema:update --dump-sql

它给了我答复:

ALTER TABLE users ADD superbanana INT NOT NULL

**我该怎么办呢? **

ALTER TABLE users ADD superbanana INT NOT NULL AFTER user_id

2 个答案:

答案 0 :(得分:13)

如果您不想删除/创建表,可以使用@columnDefinition属性并自己定义列定义。

/**
 * @var integer
 *
 * @ORM\Column(type="integer", columnDefinition="INT NOT NULL AFTER `user_id`")
 */
private $superbanana;

答案 1 :(得分:0)

我不认为这是可能的,因为使用Doctrine意味着您不再关心如何管理表(显然之前有人tried it)。

既然你从不直接使用MySQL,我认为没有实用工具来指定Doctrine的列顺序。

但您可以随时删除您的表格,以便Doctrine完全重建表格,尊重您的订单。