php - 交响乐 2 : Doctrine can't create relationship

标签 php symfony doctrine-orm

我对 Symfony 2.0 和学说还很陌生。我在不同的包中有状态和客户实体。我只想添加状态和客户之间的关系。我编码状态和客户实体。这是我的代码:

/**
 * @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 app/console doctrine:schema:create 命令生成模式时生成了表。但是关系没有生成/状态列没有在客户表/中生成。为什么?我不知道?我会很高兴收到每条建议和帖子。

最佳答案

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

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

编辑:随着 Symfony2 beta2 中引入的变化,注释发生了一点变化。注解在使用前需要导入;导入 Doctrine 看起来像这样:

use Doctrine\ORM\Mapping as ORM;

那么新的用法是这样的:

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

some discussion注释系统的进一步变化;如果推出这些更改,我会回来进行另一次编辑。

关于php - 交响乐 2 : Doctrine can't create relationship,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5951176/

相关文章:

php - 如何在来自 Web 服务器的流式内容上设置只读标志

symfony - 唯一实体不起作用

Doctrine Query Builder - 如何选择多对多关系?

php - 使用 Doctrine 将大量数据插入 MongoDB 集合

symfony - 查询构建器中具有不相关实体的“Invalid PathExpression. Must be a StateFieldPathExpression”

php - 在 laravelblade 中显示 LaravelNotification 的数据

php - 如何使用 Sencha Touch 2 (Native Packaging) 创建 Widget?

php - Solr 按字段值提升结果

Symfony autowire @required 方法与事件调度程序从未被调用

php - Symfony2 Sonata Media Bundle——上传图片时出错