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