在HABTM关系中验证来自其他模型的多个字段

时间:2015-04-20 09:55:24

标签: php mysql cakephp has-and-belongs-to-many cakephp-2.4

我使用的是什么:

cakephp版本2.4.1

我有什么:

token_maps 包含属性( id ,名称,account_no,charge_code,类型)

token_map_groups 包含属性( id token_map_id ,名称,account_no,charge_code,类型)

token_map_group_providers 具有属性( id,token_map_group_id,provider_id

提供商具有属性( id ,名称)

关系

token_maps hasMany token_map_groups(一个令牌地图可以有多个令牌地图组)

token_map_groups belongsTo token_maps

token_map_groups HABTM 提供商

token_map_group_providers belongsTo token_map_groups,提供商

我已经为token_map_groups添加了页面: enter image description here

我想要的是什么:

我希望所有令牌映射组中没有相同的选择提供程序属于ONE令牌映射。

我如何验证它?

经过多次,我使用的查询将返回[尚未选择]提供商的列表。这是查询:

select id from providers where id not in (
select c.provider_id from token_maps a
select c.provider_id from token_maps a
inner join token_map_groups b ON b.token_map_id = a.id
inner join token_map_group_providers c on c.token_map_group_id=b.id
left join providers p on p.id=c.provider_id
where a.id= $id)

1 个答案:

答案 0 :(得分:1)

Suppose you have a modal User and you want to validate User's data from Product modal then what you can do is,
 1. Create validation rule in the Product modal like,    

  public $validate = array(        
'first_name' => array(    
 'rule' => '',    
'message' => ''    
));


 2. Add user data to product data like,    
    $this->Product->data['Product'] = $this->User->data['User'];

3. And in the ProductsController,   
 if($this->Product->validates()) {

}