在我的应用中,有一个交易表,其中: 卖方ID,买方ID和资产ID。
seller_id和Buyer_id应该指向用户表。为了遵守约定并保持自动关联,两者都应称为“ user_id”(这当然是不可能的)
在CakePHP 3.x中创建此类关联的正确方法是什么?
我的猜测是我应该创建特殊的关联表: 卖家(id,user_id) 买家(id,user_id)
,然后关联将通过这些表: 交易=>卖家,买家=>用户
对吗?能行吗?有更好的方法吗?
答案 0 :(得分:2)
您可以使用以下别名和外键定义关系。
在您的交易模型/表格中。
$this->belongsTo('Sellers' , [
'foreignKey' => 'seller_id',
'className' => 'Users'
]);
$this->belongsTo('Buyers' , [
'foreignKey' => 'buyer_id',
'className' => 'Users'
]);
如果您还想在用户模型中定义关系,则可以通过这种方式进行定义。
在用户模型/表中
$this->hasMany('BuyerTransactions' , [
'foreignKey' => 'buyer_id',
'className' => 'Transactions'
]);
$this->hasMany('SellerTransactions' , [
'foreignKey' => 'seller_id',
'className' => 'Transactions'
]);