Programing

먼저 또는 생성

lottogame 2020. 12. 14. 07:46
반응형

먼저 또는 생성


나는 다음을 사용하는 것을 안다.

User::firstOrCreate(array('name' => $input['name'], 'email' => $input['email'], 'password' => $input['password']));

사용자가 생성하지 않은 경우 먼저 존재하는지 확인하지만 어떻게 확인합니까? 제공된 모든 매개 변수를 확인하거나 특정 매개 변수를 지정하는 방법이 있습니까? 예를 들어 이름이 아닌 이메일 주소가 존재하는지 확인할 수 있습니까? 두 사용자가 동일한 이름을 가질 수 있지만 이메일 주소는 독특한.


firstOrCreate()finds일치 하기 전에 존재하는 모든 인수를 확인합니다 . 모든 인수가 일치하지 않으면 모델의 새 인스턴스가 생성됩니다.

특정 필드 만 확인 firstOrCreate(['field_name' => 'value'])하려면 배열의 한 항목 만 사용 하십시오. 일치하는 첫 번째 항목을 반환하거나 일치하지 않는 경우 새 항목을 만듭니다.

의 차이 firstOrCreate()firstOrNew():

  • firstOrCreate()일치하는 항목이 없으면 자동으로 데이터베이스에 새 항목을 만듭니다. 그렇지 않으면 일치하는 항목을 제공합니다.
  • firstOrNew()일치하지 않는 경우 작업 할 새 모델 인스턴스를 제공하지만 명시 적으로 수행 할 때만 데이터베이스에 저장됩니다 ( save()모델 호출 ). 그렇지 않으면 일치하는 항목을 제공합니다.

둘 중 하나를 선택하는 것은 수행하려는 작업에 따라 다릅니다. 모델 인스턴스를 처음 저장하기 전에 수정하려면 (예 : name또는 일부 필수 필드 설정 )을 사용해야합니다 firstOrNew(). 인수를 사용하여 데이터베이스를 수정하지 않고 즉시 새 모델 인스턴스를 만들 수있는 경우 firstOrCreate().


이전 답변은 구식입니다. Laravel 5.3 이후 한 단계로 달성 할 수 있습니다. firstOrCreate이제 두 번째 매개 변수 values가 있으며 새 레코드에는 사용되지만 검색에는 사용되지 않습니다.

$user = User::firstOrCreate([
    'email' => 'dummy@domain.com'
], [
    'firstName' => 'Taylor',
    'lastName' => 'Otwell'
]);

업데이트:

Laravel 5.3부터는 단일 단계로이 작업을 수행 할 수 있습니다. firstOrCreate방법에 대하여 인수로서 옵션 2 어레이를 받아 들인다.

첫 번째 배열 인수는 필드 / 값이 일치하는 배열이고, 두 번째 배열은 첫 번째 배열의 필드 / 값 일치를 통해 일치하는 항목이없는 경우 모델 생성에 사용할 추가 필드입니다.

문서보기


firstOrCreate ()는 일치하는 항목을 찾기 전에 모든 인수가 있는지 확인합니다.

특정 필드 만 확인하려면 firstOrCreate ([ 'field_name'=> 'value'])를 사용하십시오.

$user = User::firstOrCreate([
    'email' => 'abcd@gmail.com'
], [
    'firstName' => 'abcd',
    'lastName' => 'efgh',
    'veristyName'=>'xyz',
]);

그런 다음 이메일 만 확인합니다.

참고 URL : https://stackoverflow.com/questions/25178464/first-or-create

반응형