如果我有许多一对一的关系,并且我有一个允许用户为所有这些输入数据的表单,我如何确保仅将填充的记录保存在子表中。例如,用户可以有一个邮政地址和居住地址——模型设置为 hasOne 和 belongsTo。如果我显示一个允许输入用户数据的表单 - 我如何确保(使用 saveAll)只有在填写这些字段时才创建 postalAddress 或 residentalAddress 中的关联记录。
问问题
51 次
1 回答
0
首先,我认为您的关系设置不正确。如果一个User
可以有一个邮政地址和住宅地址,那可能是两个地址。这将意味着
User
hasManyAddress
Address
属于ToUser
您需要在模型中创建这些关系。更多关于关系。
其次,您需要将字段添加到表单中。我假设你已经完成了这一步。
为了在字段中强制执行数据,您需要创建一些验证规则。这些将基于您要验证的模型中的每个字段。这意味着您将需要模型中的验证规则,User
以及User
模型中的地址验证Address
。
如果您想在保存之前从数据数组中删除数据,那么您可以使用模型回调函数来实现此目的。我建议看一下beforeSave()
。阅读 beforeSave
此回调将允许您查看数据$this->data['User']['Address']['field']
以查看它是否为空,如果是,您可以从数组中删除它。
于 2013-05-23T11:29:03.667 回答