【问题标题】:How to validate only the first record from a form in cakephp?如何仅验证 cakephp 表单中的第一条记录?
【发布时间】:2011-11-04 19:21:53
【问题描述】:

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

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

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

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

如何执行此验证?

【问题讨论】:

    标签: cakephp-2.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');
    

    然后在你的 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
                )
            )
        )
    );
    

    【讨论】:

    • Scott 感谢您的回复,但是我要做的是仅验证第一个客户的注册,并且我的表单字段中有两个用于填写客户数据。我设法通过在模型客户端中创建自定义验证来做到这一点。不过谢谢!
    猜你喜欢
    • 2017-01-24
    • 1970-01-01
    • 2015-02-23
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多