Laravel Validation Rule - необходимо внести хотя бы одно изменение входного значения - PullRequest
0 голосов
/ 04 января 2019

У меня есть модель с названием, подзаголовком, датой, и я создаю форму, которая позволит пользователю отправить запрос на изменение.

Как проверить, чтобы было выполнено хотя бы одно редактирование, сравнивая поля ввода со значениями базы данных?

Я думаю, что нижеприведенное будет гарантировать, что введенный заголовок отличается от значения в 'different:', но как мне сделать это только для хотя бы одного поля?

public function rules()
{

    return [
        'title' => [
            'required',
            'different:Dynamic Title name here',
            'string',
            'max:60',
            'not_regex:/[\x{1F600}-\x{1F64F}]/u'
        ],
        'subtitle' => [
            'string',
            'nullable',
            'max:90',
            'not_regex:/[\x{1F600}-\x{1F64F}]/u'
        ]

    ];

}

например. Заголовок, Подзаголовок, Поля даты показаны. Пользователь должен отредактировать хотя бы одно из них из текущих значений базы данных, чтобы отправить.

1 Ответ

0 голосов
/ 04 января 2019

Я не знаю вашего решения, но я бы рекомендовал взглянуть на функцию isDirty ().

/**
* this will return false, because after we get the record from
* database, there's no attribute of it that we changed. we just 
* print if it's dirty or not. so it tells us: "I'm clean, nobody has 
* changed my attributes at all.
*/
$role = Role::findOrFail(1);
return $role->isDirty();

/**
* lets say We fetched this role with id=1 and its status was 1. what
* this returns is still false, because even though we set the status
* attribute equal to 1, we still didn't change it. It was 1 when we
* received it from the database and it's still 1.
*/
$role = Role::findOrFail(1);
$role->status = 1;
return $role->isDirty();

/**
* now if the status was 1 in the db, and we set it to 2, it will 
* print the true.
*/
$role = Role::findOrFail(1);
$role->status = 2;
return $role->isDirty();

Вы также можете передать аргумент функции isDirty(), которая будет проверять только это конкретное значение столбца.

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