【问题标题】:Many To One relationship in doctrine2教义中的多对一关系2
【发布时间】:2015-07-29 02:44:49
【问题描述】:

我无法理解教义并尝试创建实体。下面的sql语句会不会对应下面的学说实体

create table comments (
    id SERIAL PRIMARY KEY,
    message VARCHAR,
    parent_id INTEGER REFERENCES comments(id)
 );


/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var integer
 *
 * @ORM\Column(name="parent_id", type="integer")
 * @ORM\OneToMany(targetEntity="Comment", mappedBy="id")
 */
private $parent_id;

【问题讨论】:

    标签: php sql symfony orm doctrine-orm


    【解决方案1】:

    您有点混淆了 id 和实体定义:在您的示例中,parent_id 变量将包含父评论实体而不是 id(变量名称暗示)。此外,您的关联是错误的方式 - 在定义父实体时它应该是 ManyToOne(一个父评论的许多子 cmets)。

    基本上您可以按照doctrine association mappins 中的示例案例(一对多,自引用部分) - 还有从父注释到子注释的实体关系定义为arrayCollection。如果您不需要子连接,您可以从父变量注释中删除相关变量和 inversedBy 定义。

    如果引用的示例不够清晰,我也可以发布完整代码(因为我恰好已经为评论实体完成了完全相同的代码)

    【讨论】:

      【解决方案2】:

      parent(除了初始化的子对象之外的另一个对象)可以有多个“子对象”,因此关系应该是ManyToOne 关系。

      还可以在这里查看解决方案:https://stackoverflow.com/a/24002956/1794894

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多