Уникальное правило, игнорировать нулевое значение - PullRequest
0 голосов
/ 02 мая 2019

У меня есть FormRequest, где я хочу проверить уникальность поля fiscal_id при обновлении строки, вид проверки работает, но проблема в том, что fiscal_id может быть нулевым, так что если при обновлении егоЯ отправляю ноль, уникальное правило не передается.

'fiscal_id' => [
    'sometimes', 
    Rule::unique('table', 'fiscal_id')->where(function($query) {
        $query->whereNull('deleted_at')
            ->where('company_id', auth()->user()->company_id);
    })->ignore($this->route('customer')->id)
]

Как я могу проверить уникальность fiscal_id, когда null (потому что есть другие поля с null, поэтому он не работает).

1 Ответ

0 голосов
/ 03 мая 2019

попробуйте разделить проверку для создания и обновления, как это

public function rules() {
    // rules for updating record
    if ($this->method() == 'PATCH') {
        return [
            'fiscal_id' => [
                 'nullable',
                 Rule::unique('table', 'fiscal_id')->where(function($query) {
                    $query->whereNull('deleted_at')
                 ->where('company_id',auth()->user()->company_id);
                 })->ignore($this->route('customer')->id)
             ]
        ];
    } else {
    // rules for creating record
        return [
            'fiscal_id' => [
                 'required',
                 Rule::unique('table', 'fiscal_id')->where(function($query) {
                    $query->whereNull('deleted_at')
                 ->where('company_id',auth()->user()->company_id);
                 })
             ]
        ];
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...