我看到了在 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/