2011-11-04 40 views
0

我使用cakephp 2.0,我有两种模式:客户端和提议。如何仅在cakephp中验证表单中的第一条记录?

建议的模型与HasMany客户端有关; Model Client与使用belongsTo的提案相关;

插入到两个字段中查看客户群但希望验证提案中仅存在第一个客户端。

我已经尝试了几种方法,但我做不到。

如何执行此验证?

回答

1

我不确定我明白你的意思是“仅在提案中第一个客户的存在”。该声明使我相信,您正在寻找有序列表中的第一个客户(而不是简单地如果有一个或多个记录)。

下面一些方法,你可以根据我可以从你的问题推断出两种不同的方法来解决:

1)你只是想看看是否有连接到提案的客户端。

您可以在您的客户端模型中实施counter_cache,以便在查询提案时甚至不需要查看客户端模型。如果值是零,那么没有客户端:

public $belongsTo = array(
    'proposal' => array(
     'counter_cache' => true 
    ) 
); 

或者,你可以看到,如果客户端阵列比零你发现你的建议后更大;

$proposal = $this->Proposal->findById($proposalId); 
if(sizeof($proposal['Client'])>0){ //Do this } 

2)找到,不管以何种顺序已经设置了“第一”的客户端。

使这两种模型“可控”。

public $actsAs = array('Containable'); 
在发现声明

然后,做..

$this->Proposal->find(
    'first', 
    array(
     'conditions' => array(//conditions for the proposal you want), 
     'contain' => array(
      'Client' => array(
       'order' => array(//order statement to get the first client), 
       'limit' => 1 
      ) 
     ) 
    ) 
); 
+0

斯科特感谢您的答复, 什么,但是我会做的是验证只有第一个客户的登记,并有两个在我的表单域填写客户数据。 我设法通过在模型客户端中创建自定义验证来完成此操作。 不过谢谢! –

相关问题