2014-12-05 2 views
0

Laravel 문서, API 문서 및 소스 코드를 살펴보면 다음 고유 규칙에있는 id의 4 번째 매개 변수에 대해 알고있는 사람이 있는지 궁금해하고 있습니까?Laravel 검증 : 고유 규칙 4 번째 매개 변수

'email' => 'unique:users,email_address,NULL,id,account_id,1' 

이 규칙의 나의 현재 이해는 다음과 같습니다

  • users -이 테이블
  • email_address을보고 -이 칼럼에 대해 확인
  • NULL - 우리는 기본 키를 지정할 수있는 곳이 될 것입니다/ID 값은 무시하지만 무시할 가치가 없습니다.이 매개 변수는 본질적으로 무시됩니다.
  • id - 확실
  • account_id - 절은,이 열 이름
  • 1입니다 추가 -에서 account_id의 값이 where 절

문서 : 고유을 수행하기위한 http://laravel.com/docs/4.2/validation

기능 담당 규칙 유효성 검사는 \Illuminate\Validation\Validator의 기능에서 validateUnique($attribute, $value, $parameters) 온라인 949 :

에 있습니다. 10
/** 
* Validate the uniqueness of an attribute value on a given database table. 
* 
* If a database column is not specified, the attribute will be used. 
* 
* @param string $attribute 
* @param mixed $value 
* @param array $parameters 
* @return bool 
*/ 
protected function validateUnique($attribute, $value, $parameters) 
{ 
    $this->requireParameterCount(1, $parameters, 'unique'); 

    $table = $parameters[0]; 

    // The second parameter position holds the name of the column that needs to 
    // be verified as unique. If this parameter isn't specified we will just 
    // assume that this column to be verified shares the attribute's name. 
    $column = isset($parameters[1]) ? $parameters[1] : $attribute; 

    list($idColumn, $id) = array(null, null); 

    if (isset($parameters[2])) 
    { 
     list($idColumn, $id) = $this->getUniqueIds($parameters); 

     if (strtolower($id) == 'null') $id = null; 
    } 

    // The presence verifier is responsible for counting rows within this store 
    // mechanism which might be a relational database or any other permanent 
    // data store like Redis, etc. We will use it to determine uniqueness. 
    $verifier = $this->getPresenceVerifier(); 

    $extra = $this->getUniqueExtra($parameters); 

    return $verifier->getCount(

     $table, $column, $value, $id, $idColumn, $extra 

    ) == 0; 
} 

건배

답변

1

아 너트, 나는 페니 그냥 떨어졌다 생각합니다.

내가 틀렸다고 정정하십시오. 그러나 4 번째 매개 변수는 3에 지정된 ID를 무시할 때 검사 할 열을 지정할 수 있다는 점에서 세 번째 매개 변수와 관련이 있습니다. id이 아닌 경우.

예, 기본 키는 id 아니었다 대신, 우리가 할 수있는 user_id 인 경우 : 그림과 같이

'email' => 'unique:users,email_address,NULL,user_id,account_id,1' 
1
  • $ ARG1 -이 표에보고
  • $ ARG2 -이 열에 대해 확인 중입니다. 유효성 검사 키 기본값 (eq : email)
  • $ ARG3 - Aditional WHERE NOT value.
  • $ ARG4 - Aditional WHERE NOT NOT 필드. 기본 키 기본값
  • $ ARG5 - Aditional WHERE 필드 1 - Aditional WHERE 값.