php - 多对多关系

标签 php many-to-many yii

我看到了在 Yii 中处理多对多关系的各种不同方式。然而,我看到的例子并不完全充实,我觉得我遗漏了什么。

例如,Larry Ullman 的教程没有使用 self::MANY_MANY 关系 - http://www.larryullman.com/2010/08/10/handling-related-models-in-yii-forms/

就添加和检索记录而言,在模型、 Controller 和 View 中处理多对多的标准方法是什么?

澄清:我想我正在寻找一个涉及 2 个表的示例,它们是多对多关联的,在其中我不仅可以看到两个模型,还可以看到 Controller 和 View ,因此我可以完全理解发生了什么。

最佳答案

您实际上需要 3 个表(因此数据透视表的额外模型),但是一旦您拥有它,您实际上可以使用常规的 yii 关系功能。

例如,我的一个项目在购买和交易之间存在多对多关系(请不要问为什么 :))。因此,有一个 Purchase 模型、一个 Transaction 模型和一个 PurchaseToTransaction 模型在它们之间建立联系。我可以只做一个 $oPurchase->transactions 并且 Yii 将使用关系处理多对多部分,它定义如下:

'transactions' => array(self::MANY_MANY, 'Transaction', 'PurchaseToTransaction(purchaseId, transactionId)')

请注意,对于交易,同样适用,但反过来:

'purchases'   => array(self::MANY_MANY, 'Purchase', 'PurchaseToTransaction(transactionId, purchaseId)'),

因此 $oPurchase->transactions$oTransaction->purchases 都由 Yii 自动处理。

总之,它确实可以处理多对多使用关系(至少在阅读部分,对于写作你仍然需要任意解决方案)。

关于php - 多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5227361/

相关文章:

php - 将登录时间存储在mysql数据库中

php - md5 在多部分/混合电子邮件表单数据中的用途

mysql - 针对特定模式的多对多复杂 MySQL 查询

yii - 如何在yii下拉列表中选择默认值

php - Laravel 还是纯 PHP?

php - 难以在 Android 和 iPhone 上部署 Django 应用程序。计划切换到 PHP 而不是 Django

php - 多对多加入php/mysql

php - 用 explode 和 foreach 分解字符串

php - Yii findByAttributes() 具有大于属性。

php - 计算关系表条目