【问题标题】:Circular Dependency With ActiveRecord Relations in Yii2Yii2中带有ActiveRecord关系的循环依赖
【发布时间】:2014-09-26 07:14:50
【问题描述】:

我通过在 Yii2 框架中定义它们之间的关系来使用 ActiveRecord 模型。现在我正在尝试将依赖项注入容器与我的 ActiveRecord 模型一起使用,并希望注入我的依赖项。但是循环依赖问题让我感到困惑。

如果我们像Here 解释的那样定义我们的关系,我们最终会不会遇到循环依赖问题?还是我错过了什么?

感谢您的帮助和指点。

编辑: 我的模型中的代码示例。

class NavMenu extends \yii\db\ActiveRecord {
    public function getNavItemMenu() {
        return $this->hasOne(NavItemMenu::className(), ['id' => 'nav_item_menu_id' ]);
    }
}


class NavItemMenu extends \yii\db\ActiveRecord {
    public function getNavMenus() {
        return $this->hasMany(NavMenu::className(), ['nav_item_menu_id' => 'id' ]);
    }
}

上面的代码被简化只是为了让你了解问题。

【问题讨论】:

  • 你想写一个模型文件?与所有的关系
  • 我所做的是在mysql数据库本身中定义一个关系并使用gii工具生成模型。然后我修改模型。希望这有帮助。 yii2 还是新手。
  • 所以你需要手动关系,即使它在 mysql 表或类似的东西中不存在。请分享一些代码和表结构

标签: activerecord dependency-injection circular-dependency yii2 di-containers


【解决方案1】:

分析器在您提供给我们的链接中:)

您应该将inverseOf() 添加到getNavMenus() 关系中:

public function getNavMenus() {
    return $this->hasMany(NavMenu::className(), ['nav_item_menu_id' => 'id' ])
                ->inverseOf('navItemMenu');
}

【讨论】:

    猜你喜欢
    • 2014-09-06
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 2012-11-14
    • 2018-11-29
    相关资源
    最近更新 更多