>백엔드 개발 >PHP 튜토리얼 >Laravel의 여러 열에 걸쳐 고유한 유효성 검사를 시행하는 방법은 무엇입니까?

Laravel의 여러 열에 걸쳐 고유한 유효성 검사를 시행하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-30 06:35:02319검색

How to Enforce Unique Validation Across Multiple Columns in Laravel?

Laravel: 여러 테이블 열에서 고유한 유효성 검사 달성

조합이 고유하게 유지되어야 하는 여러 열이 포함된 테이블이 포함된 데이터베이스가 있는 시나리오의 경우 , Laravel 애플리케이션에서 이 고유성 제약 조건을 적용해야 합니다.

이러한 예 중 하나는 'ip' 및 'hostname' 열이 있는 'servers' 테이블입니다. 개별 'ip' 또는 '호스트 이름' 값이 여러 번 나타날 수 있더라도 특정 'ip'와 '호스트 이름'의 조합이 고유한지 확인하려고 합니다.

규칙을 사용한 솔루션:: Unique()

이 유효성 검사를 구현하려면 Rule::unique 메서드를 활용하세요. 이 방법을 사용하면 특정 열 집합에 대해 사용자 정의 고유 규칙을 지정할 수 있습니다. 예는 다음과 같습니다.

<code class="php">$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);</code>

설명

  • 'where()' 클로저를 사용하면 고유성 규칙에 대한 추가 제약 조건을 정의할 수 있습니다. 이 경우 유효성 검사가 실패하려면 'ip' 및 'hostname' 열이 모두 일치해야 함을 지정합니다.
  • 'unique()' 메서드를 사용하면 고유 규칙을 적용해야 하는 테이블을 지정할 수 있습니다. . 이 경우에는 'servers' 테이블입니다.
  • 'required' 규칙은 사용자가 'ip' 값을 제공하도록 보장합니다.
  • 'messages' 배열은 다음과 같은 경우 표시되는 오류 메시지를 사용자 정의합니다. 유효성 검사가 실패합니다.

이 규칙을 구현하면 애플리케이션이 '서버' 테이블에서 'ip'와 '호스트 이름'의 중복 조합을 허용하지 않도록 효과적으로 보장할 수 있습니다.

위 내용은 Laravel의 여러 열에 걸쳐 고유한 유효성 검사를 시행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.