【问题标题】:CakePHP how to validate if isNull multiple fieldsCakePHP如何验证isNull多个字段
【发布时间】:2015-01-29 10:31:10
【问题描述】:

我有以下数据库模型。

Model1 hasMany Users
Model2 hasMany Users
Model3 hasMany Users

并且一个用户只能属于一个模型。所以表用户字段如下:

id username password model1_id model2_id model3_id

我需要在 CakePHP 用户模型中检查三个外键不能同时为 NULL。

解决这个问题的最佳方法是什么?因为我无法创建任何自定义验证规则,所以考虑使用验证规则来验证一个字段。那么如何验证多个字段并打印相关的验证错误。

【问题讨论】:

  • 不应该在你的数据库中声明吗?或者您是说它们在任何给定时间都必须属于一个且仅属于一个?
  • 我想在 NULL、NULL、NULL 的情况下显示错误。就是这样。
  • 那么1, 2, NULL1, 2, 3 呢,这就是@Mr.E 所要求的。这种多外键方案通常是数据库设计不佳的一个指标。如果你想出一个更真实的例子,人们可能会给你一个提示。
  • 好的,我将解释上下文:例如,您想创建一个应用程序,您可以在其中授予对商店、销售人员和卖家的访问权限。每个人都有一张表格,里面填满了您的信息。请注意,如果是商店、卖家或推销员,您会保存不同的信息。要访问您的应用程序,您必须为每种类型的用户分配用户。那么您将如何创建数据库以及如何获取用户资料?用户可以是卖家、商店或销售人员。请注意,一个商店可以有多个用户。请告诉我一个更好的设计卖家、商店或销售人员。告诉我一个更好的设计。
  • 所以用户有3个键seller_id,shop_id和sales_id,1个用户可以属于3个表之一,3个字段中,3个不能为空。

标签: php validation cakephp


【解决方案1】:
you should add this in your Model.
public $validate = array(
'fieldName1' => array(
    'rule' => 'ruleName',
    'required' => true,
    'allowEmpty' => false,
    'message' => 'Your Error Message'
    )
);

Cakephp Validation links

【讨论】:

  • 不,我正在尝试验证 1 条规则中的 3 个字段
【解决方案2】:

使用自定义验证

public $validate = array(
'table1_id' => array(
    'rule' => array('custom_validation'),
    'required' => true,
    'allowEmpty' => false,
    'message' => 'Your Error Message'
    ),
'table2_id' => array(
    'rule' => array('custom_validation'),
    'required' => true,
    'allowEmpty' => false,
    'message' => 'Your Error Message'
    ),
'table2_id' => array(
    'rule' => array('custom_validation'),
    'required' => true,
    'allowEmpty' => false,
    'message' => 'Your Error Message'
    )
);

function custom_validation(){
    if( empty($this->data['table1_id']) && empty($this->data['table2_id']) && empty($this->data['table3_id']) ) {
       return false;
    }

      return true;
}

【讨论】:

    猜你喜欢
    • 2013-01-03
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多