【问题标题】:MVC - Many-to-Many relations--their own models?MVC - 多对多关系——他们自己的模型?
【发布时间】:2013-07-25 08:53:53
【问题描述】:

我的直截了当的问题:

如果我的数据库中有一个多对多关系(如下表)

User          Role          UserRole
  user_id       role_id       user_id
                              role_id

在将此数据库连接到 MVC 框架时,UserRole 是否应该有自己的模型?

在上下文中:

我正在用 MVC 框架重写我完全自己编写的 Web 服务,我决定使用 Yii。我可以选择从我的数据库表中生成大量代码,但我很困惑是否要为多对多关系表建模(如上面的 UserRole)。

提前致谢!

【问题讨论】:

  • 我不确定这个示例(用户和角色)是否是多对多关系。因为它更像是每个用户都有一个角色,每个角色都有很多用户。但是,无论如何,对于多对多关系,您的关系定义将类似于:return array( 'roles'=>array(self::MANY_MANY, 'Role', 'user_role(user_id, role_id)'), ); user_role 是连接表,user_idrole_id 是外键。
  • 所以你的意思是 UserRole 不应该有它自己的模型,对吧?我真的是 Yii 的新手 sry
  • 是的。 UserRole 不需要它自己的模型
  • @ragingprodigy 对于某些应用程序,用户可以拥有多个角色。
  • @Sam 好吧,这也是真的。这就是为什么我还是回答了这个问题:D

标签: sql yii many-to-many yii-cmodel


【解决方案1】:

我主要使用代码优先的方法,并且定义关系表对于多对多关系是可选的。从这里开始,我假设 MVC 框架通常认为这是可选的。所以,答案是:

UserRole 必须有自己的模型吗?没有。

UserRole 可以有自己的模型吗?是的。

UserRole 应该有自己的模型吗?如果你的多对多只包含两个 id,我不会将它添加到模型中。

【讨论】:

    【解决方案2】:

    对于多对多关系,您的关系定义类似于:return array( 'roles'=>array(self::MANY_MANY, 'Role', 'user_role(user_id, role_id)'), );user_role 是连接表,user_idrole_id 是外键。

    【讨论】:

    • 谢谢。阅读有关关系 AR 的更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 2017-10-13
    • 2014-02-02
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    相关资源
    最近更新 更多