2016-04-28 4 views
0

У меня есть сайт с несколькими экземплярами (компаниями).Проверьте наличие уникального уникального индекса с помощью запроса в Laravel

Каждая компания может добавить свой собственный инвентарь, а номер unit должен быть уникальным в данном случае (компания). Но я хочу разрешить один и тот же номер единицы на компанию. Поэтому unit+ instance_id должен быть уникальным. Есть ли способ реализовать эту проверку в правилах Запроса?

Следующее правило проверяет, существует ли единица в инвентаре. Мне нужно добавить проверку на inventory.id AND inventory_instance_id

public function rules() { 
    return [ 
     'unit' => 'unique:inventory|required|max:45', 
     'comments' => 'sometimes|max:255' 
    ]; 
} 

public function messages() { 
    return [ 
     'unit.unique' => 'Unit number already exists!', 
     'unit.required' => 'Enter Unit Number!', 
     'max' => ':attribute - Should not be longer than 255 symbols!' 
    ]; 
} 

ответ

2

Проверка unique допускает множество параметров. Синтаксис составляет примерно unique:table,column,except,idColumn,whereN,valueN.

Первый параметр - это таблица, вторая - это уникальное поле, третье - id для игнорирования, четвертый - столбец id для третьего параметра, а затем четвертый и пятый (и шесть/седьмой и т. Д.). .) позволяют указывать дополнительные условия, в которых условия для вашей уникальной проверки. Это то, что вы ищете.

Вы можете использовать четвертый и пятый параметры, чтобы указать, что ваше устройство должно быть уникальным в пределах вашего указанного идентификатора экземпляра. Предполагая, что ваш идентификатор экземпляра хранится в inventory.instance_id и у вас есть значение этого поля в переменной с именем $instanceId, ваше правило будет выглядеть примерно так:

public function rules() { 
    $instanceId = 1; 
    return [ 
     'unit' => 'unique:inventory,unit,NULL,id,instance_id,'.$instanceId.'|required|max:45', 
     'comments' => 'sometimes|max:255' 
    ]; 
} 

Как вы уже догадались, один из ваших вопросов, в настоящее время является то, что ваш правило динамически генерируется. Вам нужно будет выяснить способ обновления вашего правила с идентификатором экземпляра, который вы проверяете.

Смежные вопросы