>  기사  >  백엔드 개발  >  Laravel에서 여러 열의 고유성을 확인하는 방법은 무엇입니까?

Laravel에서 여러 열의 고유성을 확인하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-31 10:10:02201검색

How to Validate Multiple Columns for Uniqueness in Laravel?

Laravel에서 여러 열의 고유성 유효성 검사

Laravel의 유효성 검사 시스템은 애플리케이션에 제출되는 데이터가 특정 기준을 충족하는지 확인하는 편리한 방법을 제공합니다. . 일반적인 요구 사항 중 하나는 특정 열에 고유한 값이 포함되도록 하는 것입니다. 이는 사용자 계정이나 제품 목록과 같은 데이터를 저장하는 테이블을 처리할 때 특히 유용합니다.

귀하의 경우 ip와 호스트 이름이라는 두 개의 열이 있는 서버라는 테이블이 있습니다. IP와 호스트 이름의 조합이 고유한지 확인하려고 합니다. 이를 달성하기 위해 Laravel의 Rule::unique 규칙을 사용할 수 있습니다.

다음 예는 유효성 검사 규칙을 구현하는 방법을 보여줍니다.

<code class="php">use Illuminate\Validation\Rule;

$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>

이 유효성 검사 규칙은 제공된 IP와 호스트 이름이 이미 서버 테이블에 존재합니다. 그렇다면 유효성 검사가 실패하고 오류 메시지가 생성됩니다.

where 클로저를 사용자 정의하여 고유성 검사를 더욱 구체화할 수 있습니다. 예를 들어 $this->id 속성을 사용하여 업데이트 중인 현재 레코드를 제외할 수 있습니다.

<code class="php">Rule::unique('servers')
    ->where(function ($query) use ($ip, $hostname) {
        return $query->where('ip', $ip)
            ->where('hostname', $hostname)
            ->where('id', '!=', $this->id);
    }),</code>

이 수정을 통해 유효성 검사에서는 현재 레코드가 아닌 테이블의 다른 레코드만 고려합니다. .

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

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