为什么我们不能从反面设置学说的联系

时间:2017-03-23 16:44:02

标签: symfony doctrine-orm

无处不在,我读到了无法从反面设置连接,但是使用这种代码,不能小吗?

class Article
{
    private $tags;

    public function addTag(Tag $tag, $bothSide = true)
    {
        if ($bothSide) {
            $tag->addArticle($this, false); 
        }
        $this->tags[] = $tag;
    }
}

class Tag
{
    private $articles;

    public function addArticle(Article $article, $bothSide = true)
    {
        if ($bothSide) {
            $article->addTag($this, false); 
        }
        $this->articles[] = $article;
    }
}

通过使用一个简单的$bothSide var,它应该可以工作,所以我无法理解为什么它不是推荐的方式去,你能告诉我吗?

PS:我正在使用文档的代码有起点(http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#many-to-many-bidirectional

1 个答案:

答案 0 :(得分:1)

我同意@mickdev ...不清楚你的意思是什么设置doctrine的反面连接。您可以在所有者侧或反面设置参数,但是当需要持续时,数据库原则中的更改将仅检查拥有方。像您的代码之类的东西可以帮助确保始终设置拥有方,但请确保您不创建无限循环。我认为这就是你用$ bothSides参数做的事情,虽然有些尴尬。在我看来,下面的代码有点清晰。这假设Article是您正在设置的ManyToMany关系中的拥有方。

    for row in 0..<board.count
    {
        for col in 0..<board[row].count
        {

            if row == 0 && col != 0
            {
                board[row][col] = ROW AS CHARACTER
            }
            else if col == 0 && row != 0
            {
                board[row][col] = A - J
            }
            else if(col != 0 && row != 0)
            {
                board[row][col] = "*"
            }
        }
    }