@igor1112

Уникальные поля и валидация?

У меня есть таблица с уникальной комбинацией полей, в миграции я указал так -
$table->string('поле1');
$table->integer('поле2');
$table->unique(['поле1', 'поле2']);

То есть связка полей "поле1" и "поле2" должна быть уникальна в этой таблице.

Вопрос- как мне производить валидацию в контроллере колонки "поле1" при сохранении и обновлении?
  • Вопрос задан
  • 282 просмотра
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol Куратор тега Laravel
нельзя просто так взять и загуглить ошибку
Берете и проверяете в базе существование такой комбинации, непонятно в чем именно сложность.

if(Model::where('field1', $field1)->where('field2', $field2)->exists()) { 
//нельзя так делать 
}
Ответ написан
xpert13
@xpert13
Full Stack Developer
$messages = [
    'data.ip.unique' = 'Given ip and hostname are not unique',
];

Validator::make($data, [
    'data.ip' => [
        'required',
        Rule::unique('servers')->where(function ($query) use($ip,$hostname) {
            return $query->where('ip', $ip)
            ->where('hostname', $hostname);
        }),
    ],
],
$messages
);


(c) https://stackoverflow.com/questions/50349775/larav...

Но как по мне - такое себе решение. Лучше уж действительно написать своё правило.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы