Yii 如何在相关模型的两列之一中设置HAS_ONE pk 的关系



>我有一个配对模型

pair_id | first_item_id | second_item_id |

和项目模型

item_id | some_common_item_fields

对的关系是这样的:

public function relations()
{
   return array(
       'relatedFirstItem' => array(self::BELONGS_TO, 'Cash', 'debit_cash_id'),
       'relatedSecondItem' => array(self::BELONGS_TO, 'Cash', 'credit_cash_id'),
   );
}

但是如何设置从项目到它对的关系

public function relations()
{
   return array(
       'relatedPair' => array(self::HAS_ONE, 'PairModel', '???'),
   );
}

Getter 不是解决方案(因为我需要在作用域等中使用相关对)

我认为关系应该是这样的:

public function relations()
{
   return array(
       'relatedPair' => array(self::HAS_ONE, 'PairModel', '', 'on'=>'(first_item_id=:itemPkAlias or second_item_id=:itemPkAlias)'),
   );
}

但看起来 itemPkAlias 是动态给出的,我无法提前设置或获取它。

在 1 个模型中,我有

return array_merge(
    array(
            'billingAddress' => array(self::BELONGS_TO, 'Address', 'BillingAddress_id'),
            'shippingAddress' => array(self::BELONGS_TO, 'Address', 'ShippingAddress_id'),
        ),
    parent::relations()
);      

在我拥有的另一个模型中

/**
 * @return array relational rules.
 */
public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array_merge(
        array(
            'orders_billing' => array(self::HAS_MANY, 'Order', 'BillingAddress_id'),
            'orders_shipping' => array(self::HAS_MANY, 'Order', 'ShippingAddress_id'),
            ),
        parent::relations()
    );      
}

只是普通的Yii声明。

相关内容

  • 没有找到相关文章

最新更新