【问题标题】:Laravel4 Validator and nullable fieldsLaravel4 验证器和可为空的字段
【发布时间】:2014-02-17 22:53:28
【问题描述】:

我有一个关于 Laravel 4 和验证概念的问题。

我有我的 mysql 表和我的模型 Calass.. 我们可以假设我们有一个可以为空的字段...

如果此字段不为空,我该如何验证它? (例如我会是一个整数值

【问题讨论】:

  • 我认为你不能有这个功能。我在 laravel 文档中找不到
  • 默认情况下所有字段都可以为空,除非您使它们不为空。您只需像验证其他任何内容一样验证它们。您还应该注意 Validator 类并不关心数据库中的列,它所做的只是验证数据。

标签: php mysql laravel laravel-4 nullable


【解决方案1】:

除非您添加“必需”规则,否则验证将始终将字段视为可选字段。因此,numeric|max:9000 之类的规则在字段为 null 或空字符串时有效,但如果提供它,则它必须是小于 9000 的数字。

为了防止 null 或空字符串被保存到数据库中(对于整数字段,MySQL 会将其转换为 0),您可以为属性设置一个 mutator。在您的模型中:

public function setNumberAttribute($value)
{
    if ($value !== null && is_numeric($value)) {
        $this->attributes['number'] = (int) $value;
    }
}

http://laravel.com/docs/eloquent#accessors-and-mutators

【讨论】:

    【解决方案2】:

    您可以在模型中创建验证

    例如:

    class User extends Eloquent {
    
            protected $table = 'users';
    
            public $timestamps = false;
    
            public static function validate($input) {
                    $rules = array(
                            # place-holder for validation rules
                    );
    
                    # validation code
            }
    
    }
    

    for更多关于验证的描述laravel book

    【讨论】:

      猜你喜欢
      • 2021-11-14
      • 2012-03-13
      • 2022-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多