这可能是一个非常基本的问题,但是我无法解决这个问题。
在我的应用程序中,我的用户拥有多个具有不同目的的地址。例如,用户可以具有一个地址和一个发票地址。我想将两个地址存储在同一张表(“地址”模型)中,然后将它们分配给一个用户。
各个模型如下所示:
地址:
public $belongsTo = array(
'Address' => array(
'className' => 'Address',
),
'InvoiceAddress' => array(
'className' => 'Address',
),
);
和用户:
public $hasOne = array(
'Address' => array(
'className' => 'Address',
),
'InvoiceAddress' => array(
'className' => 'Address',
),
);
当一个用户有一个地址时,我会将一个user_id作为外键添加到Address模型中,并完成此操作。但是显然,CakePhp必须做些不同的事情才能区分地址和发票地址。
在我看来,解决方案就像在User表中添加address_id和invoice_address_id一样,但是我似乎无法以任何方式使其工作。
如果要在用户表中添加相关字段,则最好以以下格式address_user_id
和来添加它们invoice_address_user_id
。然后,您的用户模型中必须具有一个类似于以下内容的belongsTo关系:
public $belongsTo = array(
'Address' => array(
'className' => 'Address',
'foreignKey' => 'address_user_id',
),
'InvoiceAddress' => array(
'className' => 'Address',
'foreignKey' => 'invoice_address_user_id',
),
);
因此,当您执行以下命令时$this->User->find('all');
,结果将是
$result = array(0 =>
array('User' => array(...),
'Address' => array(...), // it will bring only one address row
'InvoiceAddress' => array(...) // it will bring only one address row
),
1 => ...
2 => ...
);
然后,在您的地址模型中,您必须添加的关系是:
public $hasOne = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'address_user_id',
),
'InvoiceUser' => array(
'className' => 'User',
'foreignKey' => 'invoice_address_user_id',
)
);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句