您实际上需要3个表(因此对于数据透视表是一个额外的模型),但是一旦拥有它,您实际上可以使用常规的yii关系功能.
例如,我的项目在购买和交易之间存在多对多的关系(请不要问为什么:)).因此,有一个Purchase模型,一个Transaction模型和一个PurchaseToTransaction模型,它建立了它们之间的链接.我可以做一个$oPurchase->事务,Yii将使用该关系处理多对多部分,它的定义如下:
'transactions' => array(self::MANY_MANY, 'Transaction', 'PurchaseToTransaction(purchaseId, transactionId)')
请注意,对于Transactions,同样适用,但反过来说:
'purchases' => array(self::MANY_MANY, 'Purchase', 'PurchaseToTransaction(transactionId, purchaseId)'),
因此,Yii会自动处理$oPurchase->交易和$oTransaction->购买.
总之,它确实可以处理多对多使用关系(至少在阅读部分,为了写你还需要任意解决方案).