gpt4 book ai didi

mysql - Yii:引用多个表中行的最佳方式?

转载 作者:行者123 更新时间:2023-11-29 00:58:30 25 4
gpt4 key购买 nike

引用任何模型记录的 Yii 最友好的“标准”方式是什么?

我正在尝试构建一个菜单系统,用户可以在其中创建一个菜单项,该菜单项链接到网站上的另一个项目。显然,用户将能够链接到各种类型的内容(模型)。我会在不使用 url 作为内部引用的情况下工作,以提供更大的灵 active 。

所以正如评论中提到的某种“统一主键”

我在想要么每个模型都是基本模型的扩展并引用它,就像在 this question 中一样.或者简单地为每个可以引用的模型设置一个单独的字段。

也许另一种方法是将模型和记录 ID 存储在一个字段中,然后覆盖事件记录关系“魔法”

最佳答案

你正在尝试做的是一个棘手的问题,因为 mySql 只支持第一范式关系而不支持 OOP 继承。这称为“多态关联”。虽然有几个解决方案。可以在此处找到描述其中一些的非常好的 SO 答案:

Possible to do a MySQL foreign key to one of two possible tables?

Yii 的一个可能的解决方案示例(我认为上面链接中列出的第二个)可能是有一个带有“类型”字段的“对象”表,然后将表与所需的字段分开其他类型的“对象”。然后在基本对象模型的 afterFind() 方法中,查看类型字段并附加类型 Behaviors允许访问类型表列的权限。

此外,如果您真的只是想要一种更简单的方法来制作链接或短 URL,您可以在框架中编写一些额外的函数,这些函数基本上只是让链接到对象更容易。像正常情况一样为所有对象类型拥有单独的模型,但有一个带有主键(或 URL slug)的中央表,它与各个类型建立了关系。您可以重写 createUrl(),这样它只接受主 key (无论内容类型如何),然后通过查找要在主表中使用的模型/ Controller 来构建正确的链接。

这就是 Drupal 的 URL 别名允许您做的事情。比重新创建类似 Drupal CCK 的系统更容易!无论如何,这都是不必要的,除非您将来确实需要灵活地更改内容。

关于mysql - Yii:引用多个表中行的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4909031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com