-1

如果我有许多一对一的关系,并且我有一个允许用户为所有这些输入数据的表单,我如何确保仅将填充的记录保存在子表中。例如,用户可以有一个邮政地址和居住地址——模型设置为 hasOne 和 belongsTo。如果我显示一个允许输入用户数据的表单 - 我如何确保(使用 saveAll)只有在填写这些字段时才创建 postalAddress 或 residentalAddress 中的关联记录。

4

1 回答 1

0

首先,我认为您的关系设置不正确。如果一个User可以有一个邮政地址和住宅地址,那可能是两个地址。这将意味着

UserhasManyAddress
Address属于ToUser

您需要在模型中创建这些关系。更多关于关系

其次,您需要将字段添加到表单中。我假设你已经完成了这一步。

为了在字段中强制执行数据,您需要创建一些验证规则。这些将基于您要验证的模型中的每个字段。这意味着您将需要模型中的验证规则,User以及User模型中的地址验证Address

如果您想在保存之前从数据数组中删除数据,那么您可以使用模型回调函数来实现此目的。我建议看一下beforeSave()阅读 beforeSave

此回调将允许您查看数据$this->data['User']['Address']['field']以查看它是否为空,如果是,您可以从数组中删除它。

于 2013-05-23T11:29:03.667 回答