먼저 또는 생성
나는 다음을 사용하는 것을 안다.
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
'Programing' 카테고리의 다른 글
Ruby on Rails에 해시가있는 경우 무관심하게 액세스 할 수있는 방법이 있습니까? (0) | 2020.12.15 |
---|---|
Vim에서 HTML 태그 탐색 (0) | 2020.12.15 |
재귀 적으로 디렉토리에서 파일 검색 (0) | 2020.12.14 |
컴파일 오류-zlib.h 누락 (0) | 2020.12.14 |
UITableView는 반투명 탐색 모음 아래에 있습니다. (0) | 2020.12.14 |