PHPackages                             pedroufv/uniquewith-validator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Validation &amp; Sanitization](/categories/validation)
4. /
5. pedroufv/uniquewith-validator

ActiveLibrary[Validation &amp; Sanitization](/categories/validation)

pedroufv/uniquewith-validator
=============================

Custom Laravel Validator for combined unique indexes

3.4.1(5y ago)08MITPHP

Since Jan 2Pushed 5y agoCompare

[ Source](https://github.com/pedroufv/uniquewith-validator)[ Packagist](https://packagist.org/packages/pedroufv/uniquewith-validator)[ Docs](https://github.com/felixkiss/uniquewith-validator)[ RSS](/packages/pedroufv-uniquewith-validator/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (4)Versions (28)Used By (0)

unique\_with Validator Rule For Laravel
=======================================

[](#unique_with-validator-rule-for-laravel)

[![Build Status](https://camo.githubusercontent.com/8cb7168ddbc04d225e769ff2bd9ea1d0c091afb72ca11335fb927d36be12a803/68747470733a2f2f7472617669732d63692e6f72672f66656c69786b6973732f756e69717565776974682d76616c696461746f722e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/felixkiss/uniquewith-validator)

This package contains a variant of the `validateUnique` rule for Laravel, that allows for validation of multi-column UNIQUE indexes.

Documentation for older versions
--------------------------------

[](#documentation-for-older-versions)

- [Laravel 4](https://github.com/felixkiss/uniquewith-validator/blob/2.0.8/README.md#laravel-4)

Installation
------------

[](#installation)

Install the package through [Composer](http://getcomposer.org). On the command line:

```
composer require felixkiss/uniquewith-validator

```

Configuration
-------------

[](#configuration)

Add the following to your `providers` array in `config/app.php`:

```
'providers' => [
    // ...

    Felixkiss\UniqueWithValidator\ServiceProvider::class,
],
```

Usage
-----

[](#usage)

Use it like any `Validator` rule:

```
$rules = [
    '' => 'unique_with:,[,,...,]',
];
```

See the [Validation documentation](http://laravel.com/docs/validation) of Laravel.

### Specify different column names in the database

[](#specify-different-column-names-in-the-database)

If your input field names are different from the corresponding database columns, you can specify the column names explicitly.

e.g. your input contains a field 'last\_name', but the column in your database is called 'sur\_name':

```
$rules = [
    'first_name' => 'unique_with:users, middle_name, last_name = sur_name',
];
```

### Ignore existing row (useful when updating)

[](#ignore-existing-row-useful-when-updating)

You can also specify a row id to ignore (useful to solve unique constraint when updating)

This will ignore row with id 2

```
$rules = [
    'first_name' => 'required|unique_with:users,last_name,2',
    'last_name' => 'required',
];
```

To specify a custom column name for the id, pass it like

```
$rules = [
    'first_name' => 'required|unique_with:users,last_name,2 = custom_id_column',
    'last_name' => 'required',
];
```

If your id is not numeric, you can tell the validator

```
$rules = [
    'first_name' => 'required|unique_with:users,last_name,ignore:abc123',
    'last_name' => 'required',
];
```

### Add additional clauses (e.g. when using soft deletes)

[](#add-additional-clauses-eg-when-using-soft-deletes)

You can also set additional clauses. For example, if your model uses soft deleting then you can use the following code to select all existing rows but marked as deleted

```
$rules = [
    'first_name' => 'required|unique_with:users,last_name,deleted_at,2 = custom_id_column',
    'last_name' => 'required',
];
```

*Soft delete caveat:*

In Laravel 5 (tested on 5.5), if the validation is performed in form request class, field deleted\_at is skipped, because it's not send in request. To solve this problem, add 'deleted\_at' =&gt; null to Your validation parameters in request class., e.g.:

```
protected function validationData()
{
    return array_merge($this->request->all(), [
        'deleted_at' => null
    ]);
}
```

### Specify specific database connection to use

[](#specify-specific-database-connection-to-use)

If we have a connection named `some-database`, we can enforce this connection (rather than the default) like this:

```
$rules = [
    'first_name' => 'unique_with:some-database.users, middle_name, last_name',
];
```

Example
-------

[](#example)

Pretend you have a `users` table in your database plus `User` model like this:

```
