0

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

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

插入两个字段以查看客户群,但想验证提案中仅存在第一个客户。

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

如何执行此验证?

4

1 回答 1

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');

然后在你的 find 声明中,这样做..

$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
            )
        )
    )
);
于 2011-11-09T02:11:31.593 回答