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 중국어 웹사이트의 기타 관련 기사를 참조하세요!