Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller 与模型关系抗争_Model View Controller_Codeigniter - Fatal编程技术网

Model view controller 与模型关系抗争

Model view controller 与模型关系抗争,model-view-controller,codeigniter,Model View Controller,Codeigniter,我很难与我项目中的几个模型建立关系 模型有:乐队、音乐家、乐器 乐队有多个音乐家 音乐家有多种乐队和多种乐器 这很简单,但我还需要记录音乐家为特定乐队使用的乐器。所以在某种意义上,我想,乐队通过音乐家拥有多种乐器 在表中,我打算将乐器id添加到乐队音乐家链接表中,但我需要一个音乐家能够为一个乐队拥有多个乐器,所以我想它需要放在音乐家乐器表中 与这些模型建立关系的最佳方式是什么 谢谢你的时间 见: 这应该会让您了解如何着手设计数据库结构。someoneinomaha 也许您需要第四个模型,它将覆

我很难与我项目中的几个模型建立关系

模型有:乐队、音乐家、乐器

乐队有多个音乐家

音乐家有多种乐队和多种乐器

这很简单,但我还需要记录音乐家为特定乐队使用的乐器。所以在某种意义上,我想,乐队通过音乐家拥有多种乐器

在表中,我打算将乐器id添加到乐队音乐家链接表中,但我需要一个音乐家能够为一个乐队拥有多个乐器,所以我想它需要放在音乐家乐器表中

与这些模型建立关系的最佳方式是什么

谢谢你的时间

见:


这应该会让您了解如何着手设计数据库结构。

someoneinomaha 也许您需要第四个模型,它将覆盖并合并她的所有子实体,例如,称为“Mus模型”(或任何您想要的),并有一些方法,如:

  • 获得()
  • 获取仪器()
  • 找乐师()
  • 通过音乐人获得乐器
  • 通过乐队获得音乐家
  • 通过乐队()获取乐器
  • 由音乐人获得乐队音乐() 依此类推……它将为您提供所需的数据,而不会破坏实体关系

    • 音乐家与乐队和乐器都有一对多的关系。因此,创建音乐家表,并将所有与音乐家自身相关的信息添加到该表中

      创建一个instruments表以保存有关仪器的信息,并对标注栏执行相同的操作。这将照顾您的所有个人物品

      然后创建类似“band_assignments”的表格,该表格只包含乐队id和音乐家id,并将两者链接在一起。创建一个“仪器分配”表来执行相同的操作

      现在,当您查询音乐家时,您可以将所有这些表连接在一起,以获取所需的数据,或有选择地连接乐器、乐队,或按“连接日期”排序并限制以获取他们加入的最后一个乐队或他们学习的最后一个乐器

      基本上5张表应该涵盖所有内容

      musicians  (musician_id, first_name, last_name)
      bands  (band_id, name)
      instruments  (instrument_id, name)
      band_instument_assignments  (musician_id, band_id, instrument_id, date_played)
      

      正如您在上面编辑的版本中所看到的,您将在“band_instrument_assignments”(乐队乐器分配)表中有多个行——每个用户在每个乐队中演奏的乐器对应一行。您需要使用一些GROUP BY和LIMIT子句来获取所需的数据,但它应该适合您。

      我可能会晚一点参加聚会,而且我不是数据库专家,但我发现绘制数据库模式非常有帮助。只需制作方框并填写表名和列,然后绘制箭头来定义关系,就可以更清楚地了解如何组织内容以及是否需要添加一个表来连接其他两个表


      如果所有这些都失败了,只需从databaseanswers.org复制一个模式。我相信有一个可能会对你有所帮助

      一个音乐家能参加多个乐队吗?我也在努力与一个模特建立关系…:)很好。是的,一个音乐家可以在多个乐队中演奏。我想做的是,在这种结构下,我不知道它是如何工作的,可以说,对于x乐队,y音乐家演奏a和b乐器,但对于z乐队,她演奏c乐器。所以看起来我需要添加另一个结构来处理。。。除非我不明白你在这里画了什么。谢谢大家!@someoneinomaha-查看新编辑的表结构。我在下面添加了一些评论来解释它是如何工作的。现在可能会更容易使用。马上。。。谢谢你的帮助。非常感谢!我无意中否决了你的答案,而现在显然,我不能再投票了。对不起@有人说:哈哈!来得容易去得快,我的朋友。很高兴我能帮上忙。。。快乐编码。