如何在CakePHP中创建多hasMany关联的mysql表?

如何在CakePHP中创建多hasMany关联的mysql表?,mysql,cakephp,database-design,uuid,polymorphic-associations,Mysql,Cakephp,Database Design,Uuid,Polymorphic Associations,我正在定义一个全新的数据库。我现在面临一个问题 我会把它描述为“平常”,但仍然找不到好的 来自网络的信息。问题是: 我的数据库中有许多表(我将其描述为指南),例如: 技巧 地点 活动 等等 现在,对于所有这些指南类型,我想添加一个注释功能和 其他类似功能,如附加图像和视频。我有很多类型的指南,所以我放弃了为每个指南分别设置一个评论图像和视频表的想法。他们每人需要一张桌子 问题是,实现这一目标的最佳方式是什么?我听说并阅读过3种解决方案,但我对其中任何一种都不熟悉 我读过关于使用UUID可以解

我正在定义一个全新的数据库。我现在面临一个问题 我会把它描述为“平常”,但仍然找不到好的 来自网络的信息。问题是:

我的数据库中有许多表(我将其描述为指南),例如:

  • 技巧
  • 地点
  • 活动
  • 等等
现在,对于所有这些指南类型,我想添加一个注释功能和 其他类似功能,如附加图像和视频。我有很多类型的指南,所以我放弃了为每个指南分别设置一个评论图像和视频表的想法。他们每人需要一张桌子

问题是,实现这一目标的最佳方式是什么?我听说并阅读过3种解决方案,但我对其中任何一种都不熟悉

  • 我读过关于使用UUID可以解决这个问题的文章,但我不太熟悉它们的功能。如果这是正确的方法,有人能详细说明一下吗

  • 我读到的另一件事是创建一个层次模型“树表”,它将保存关联链接。更多信息请访问

  • 我也读过关于在MySQL中创建对象表和使用类似于程序的对象继承,类似于层次模型

  • UUID听起来最简单,所以我非常感谢您的帮助

    我不知道如何使用它们。但我的想法是这样的——至少你会了解我在这里试图实现的目标以及我对他们的误解:

    • 我将创建一个新表:Guides,它可以有UUID字段
    • 然后将所有这些指南类型(技能等)链接到指南表(指南作为父项,另一个作为子项)
    • 父级和子级都有UUID字段,并且在创建指南时,父级和子级将获得相同的UUID,以便可以链接它们。孩子也有自己的Id字段
    • 然后,使用指向指南的UUID字段加上注释的单独id int字段,将注释链接到指南

    请告诉我这是正确的方法还是完全是垃圾,如果是的话,我应该怎么做

    检查,在那里创建数据库布局,稍后下载SQL。

    检查,在那里创建数据库布局,稍后下载SQL。

    您考虑过使用正常的
    与条件有许多关系吗


    你想过使用一个正常的
    与一个条件有很多关系吗


    我读了更多关于UUID的内容,因为它们允许应用程序范围内的唯一ID,所以我能够实现数据库的“继承”风格

    我在每个表名的开头使用了自己的前缀,以避免保留表名冲突,例如对象。您可以使用任何类型的前缀,例如:my_u,并像使用my_u对象一样使用它。在此示例中,所有表都应使用前缀

    所以我创建了表对象。它具有二进制(36)类型的id字段。Cake将其识别为UUID字段。然后我使用1:1标识关系,并从中继承其他表,我希望与其他人进行交互

    因此,我创建了与评论、视频、图片表的1:1标识关系,以便该表的标识外键也是主键

    然后,我创建了映射表,使用了两个不带主键的1:1非标识关系。这意味着这真的是一种与自我的关系

    现在,让我从Objects表“继承”其他表,比如具有1:1标识关系的News表。然后,可以使用映射表将注释或任何其他与对象具有1:1标识关系的内容链接到新闻表


    我希望这也能帮助其他正在考虑这种解决方案的人。

    我阅读了更多关于UUID的内容,因为UUID允许应用程序范围内的唯一ID,所以我能够实现数据库的“继承”风格

    我在每个表名的开头使用了自己的前缀,以避免保留表名冲突,例如对象。您可以使用任何类型的前缀,例如:my_u,并像使用my_u对象一样使用它。在此示例中,所有表都应使用前缀

    所以我创建了表对象。它具有二进制(36)类型的id字段。Cake将其识别为UUID字段。然后我使用1:1标识关系,并从中继承其他表,我希望与其他人进行交互

    因此,我创建了与评论、视频、图片表的1:1标识关系,以便该表的标识外键也是主键

    然后,我创建了映射表,使用了两个不带主键的1:1非标识关系。这意味着这真的是一种与自我的关系

    现在,让我从Objects表“继承”其他表,比如具有1:1标识关系的News表。然后,可以使用映射表将注释或任何其他与对象具有1:1标识关系的内容链接到新闻表


    我希望这也能帮助其他正在考虑这种解决方案的人。

    我有,但如果我理解正确,它会断开这些表之间的链接,它们必须手动编码。我希望寻求一种解决办法,如果可能的话,不会中断联系。或者cakephp处理这种类型的解决方案有多好?我有,但如果我理解正确,它会断开这些表之间的链接,它们必须手动编码。我希望寻求一种解决办法,如果可能的话,不会中断联系。或者cakephp如何处理这种类型的解决方案?这是我尝试过的,看起来还可以,但我担心如果赔率/地点/事物得到相同的指南id,那么可能会破坏系统,因为相同的指南会引用多个“真正的指南”。还是我什么都不担心?这是我尝试过的,看起来还可以,但我担心如果机会/地点/事物得到相同的指南,它会破坏系统
    class Skill extends AppModel {
      var $hasMany = array(
        'Comment' => array(
          'className'     => 'Comment',
            'conditions'    => array('Comment.type' => 1), // 1 for skills, 2 for places etc. or something like that.
          )
        );  
    }