如何仅验证cakephp中表单中的第一条记录?

时间:2011-11-04 19:21:54

标签: cakephp-2.0

我正在使用cakephp 2.0,我有两个模型:客户端和提案。

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

的提案相关

插入两个字段以查看客户群,但希望验证提案中是否只存在第一个客户。

我尝试了几种方法,但我不能这样做。

如何执行此验证?

1 个答案:

答案 0 :(得分:1)

我不确定我的理解是“仅提案中第一位客户”。该声明让我相信您正在寻找有序列表中的第一个客户端(而不仅仅是如果有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
            )
        )
    )
);