在两个不同的数据库上有两个模型时进行CakePhp表单验证

在两个不同的数据库上有两个模型时进行CakePhp表单验证,cakephp,model,validation,multiple-databases,Cakephp,Model,Validation,Multiple Databases,我在进行表单验证时遇到了一个不常见的问题 首先让我解释一下问题的一部分:我正在做一个cakePhp网站,这个网站将用于向客户销售产品。为此,我们有两个数据库:一个数据库(数据库A)与产品、客户参考资料、账单(由ERP提供)相关,另一个数据库(数据库B)与网站仅为网站存储的信息相关(用户密码、购物车内容、产品评论等) 要在我们的网站上注册一名用户,我必须: 在数据库A中创建一个“地址” 在数据库A中创建一个“客户” 在数据库B中创建一个“用户” 这只能是一个行动 我在用户控制器上,所以验证“用户”

我在进行表单验证时遇到了一个不常见的问题

首先让我解释一下问题的一部分:我正在做一个cakePhp网站,这个网站将用于向客户销售产品。为此,我们有两个数据库:一个数据库(数据库A)与产品、客户参考资料、账单(由ERP提供)相关,另一个数据库(数据库B)与网站仅为网站存储的信息相关(用户密码、购物车内容、产品评论等)

要在我们的网站上注册一名用户,我必须: 在数据库A中创建一个“地址” 在数据库A中创建一个“客户” 在数据库B中创建一个“用户”

这只能是一个行动

我在用户控制器上,所以验证“用户”的每个字段没有问题,但是如何使此表单验证我在客户和地址模型中的所有约束

问题是,由于用户和客户不在同一个数据库中,我不能(事实上我不确定这一点,但这似乎是合乎逻辑的,因为自动左连接)声明$belongsTo和$hasOne用户和客户之间的关系

那么我如何检查这些约束呢?
非常感谢

您可以手动验证字段

$this->Customer->set( $this->data );
$this->Address->set( $this->data );

if( $this->User->validates() && $this->Customer->validates() && $this->Address->validates() ) {
    // save data
}

好的,但是在表单中,我应该选择哪一个?对于用户,确定:'user.username'对于客户:'user.customer.Language'或'customer.Language'对于地址:'user.customer.Address.Name'或'customer.Address.Name'或'Address.Name'谢谢,如果模型之间没有关系,则无法链接模型。只要使用
Model.field
就可以了。好吧,这对我来说太好了。最后一个问题:我的模型似乎已验证,但仅显示与当前模型(控制器)相关的异常。如何显示其他字段?忘了这个,问题似乎是因为如果我的用户无效,我没有检查客户。如果我执行三个验证,我会有所有的错误,还是每个都会删除以前的验证错误?表单会有什么,因为它没有看到所有必需的模型字段