验证数据库唯一约束


Validate DB Unique constraits

我想知道如何只验证一个(多个)字段。为例。我有一个Permission模型,它有一个限制,其中两个字段是唯一的。

许可迁移

Schema::create('permissions', function (Blueprint $table) {
    $table->increments('id');
    $table->string('namespace')->nullable();
    $table->string('name');
    $table->unique(array('namespace', 'name'));
});

我知道Validator类有一个独特的规则,但我认为它只适用于一个字段,而不是两个或多个。

class Permission extends BaseModel {
    protected $table = 'permissions';
    public static $rules = array(
        'name'      => 'required|alpha',
        'namespace' => 'alpha'
    );
}
class BaseModel extends Eloquent
{
    public $errors;
    public static function boot()
    {
        parent::boot();
        static::saving(function($model)
        {
            return $model->validate();
        });
    }
    public function validate()
    {
        $validation = Validator::make($this->attributes, static::$rules);
        if($validation->passes()) return true;
        $this->errors = $validation->messages();
        return false;
    }
}

我的问题是如何验证这些情况,在数据库唯一约束中有多个字段

没有原生的方法来验证它。如果你看一下自定义验证器和唯一性验证,你应该能够提出一个适合你的需求的解决方案。

如果你不需要一些通用的东西,你可以看看这个例子。