Php Symfony 2:条令可以';不要建立关系

Php Symfony 2:条令可以';不要建立关系,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我对Symfony 2.0和doctrine非常陌生。我在不同的包中有状态和客户实体。我只想添加状态和客户之间的关系。我是州和客户实体的代码。以下是我的代码: /** * @orm:Entity */ class Customer { /** * @orm:Id * @orm:Column(type="integer") * @orm:GeneratedValue(strategy="AUTO") */ protected $id;

我对Symfony 2.0和doctrine非常陌生。我在不同的包中有状态和客户实体。我只想添加状态和客户之间的关系。我是州和客户实体的代码。以下是我的代码:

/**
 * @orm:Entity
 */
class Customer
{
    /**
     * @orm:Id
     * @orm:Column(type="integer")
     * @orm:GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @OneToOne(targetEntity="State")
     * @JoinColumn(name="state_id", referencedColumnName="id")
     */
    protected $state;

}

/**
 * @orm:Entity
 */
class State
{
    /**
     * @orm:Id
     * @orm:Column(type="integer")
     * @orm:GeneratedValue(strategy="IDENTITY")
     */
    protected $id;

    /**
     * @orm:Column(type="string", length="50")
     */
    protected $name;
}
和我的配置文件:

doctrine:
    dbal:
        driver:   %database_driver%
        host:     %database_host%
        dbname:   %database_name%
        user:     %database_user%
        password: %database_password%

    orm:
        auto_generate_proxy_classes: %kernel.debug%
        mappings:
            FogCustomerBundle: { type: annotation, dir: Entity/ }
            FogMainBundle: { type: annotation, dir: Entity/ }

所以我的问题是当我使用
php应用程序/控制台原则生成模式时:schema:create
命令表被生成。但关系未生成/状态列未在customer表中生成/。为什么?我不知道?我很高兴收到每一条建议和帖子。

如果您密切关注Doctrine2文档中的示例,您可能会遇到这个问题,因为Symfony2将所有Doctrine2注释放在
orm
名称空间中,而您的OneToOne和JoinColumn注释中似乎没有这些注释。$state属性的代码应如下所示:

/**
 * @orm:OneToOne(targetEntity="State")
 * @orm:JoinColumn(name="state_id", referencedColumnName="id")
 */
protected $state;
use Doctrine\ORM\Mapping as ORM;
/**
 * @ORM\OneToOne(targetEntity="State")
 * @ORM\JoinColumn(name="state_id", referencedColumnName="id")
 */
protected $state;
编辑:随着Symfony2 beta2中引入的更改,注释发生了一些变化。注释在使用之前需要导入;导入原则如下所示:

/**
 * @orm:OneToOne(targetEntity="State")
 * @orm:JoinColumn(name="state_id", referencedColumnName="id")
 */
protected $state;
use Doctrine\ORM\Mapping as ORM;
/**
 * @ORM\OneToOne(targetEntity="State")
 * @ORM\JoinColumn(name="state_id", referencedColumnName="id")
 */
protected $state;
然后新用法如下所示:

/**
 * @orm:OneToOne(targetEntity="State")
 * @orm:JoinColumn(name="state_id", referencedColumnName="id")
 */
protected $state;
use Doctrine\ORM\Mapping as ORM;
/**
 * @ORM\OneToOne(targetEntity="State")
 * @ORM\JoinColumn(name="state_id", referencedColumnName="id")
 */
protected $state;

注释系统可能会有进一步的变化;如果这些更改被推出,我将再次编辑。

谢谢您的回复。根据您的指示,我已将所有“@orm”注释更改为“orm”。然后运行'code'php应用程序/控制台条令:schema:create'code'命令并获取'code'无需处理的元数据类。'code'消息。不生成表。有什么想法吗?你能用你的新实体更新你的问题吗?