Laravel Eloquent를 사용하여 마지막으로 삽입 한 ID 가져 오기
현재 아래 코드를 사용하여 테이블에 데이터를 삽입하고 있습니다.
<?php
public function saveDetailsCompany()
{
$post = Input::All();
$data = new Company;
$data->nombre = $post['name'];
$data->direccion = $post['address'];
$data->telefono = $post['phone'];
$data->email = $post['email'];
$data->giro = $post['type'];
$data->fecha_registro = date("Y-m-d H:i:s");
$data->fecha_modificacion = date("Y-m-d H:i:s");
if ($data->save()) {
return Response::json(array('success' => true), 200);
}
}
마지막으로 삽입 한 ID를 반환하고 싶지만 얻는 방법을 모르겠습니다.
친절하다!
후 save
, $data->id
마지막 ID를 삽입해야합니다.
return Response::json(array('success' => true, 'last_insert_id' => $data->id), 200);
업데이트 된 laravel 버전을 위해 이것을 시도하십시오
return response()->json(array('success' => true, 'last_insert_id' => $data->id), 200);
xdazz는 이 경우 권리이지만, 사용하고있는 미래 방문자의 이익을 위해 DB::statement
또는 DB::insert
다른 방법이있다 :
DB::getPdo()->lastInsertId();
Jeffrey Way가 Model::create()
Laracasts 5 튜토리얼에서 사용하는 방법을 좋아하는 사람 은 컨트롤러의 각 필드를 명시 적으로 설정하지 않고 $fillable
대량 할당을 위해 모델을 사용하지 않고 (새로운 사람과 사용하는 사람에게 매우 중요) 이 방법) : 나는 많은 사람들을 사용 insertGetId()
하지만 불행히도 이것은 $fillable
화이트리스트를 존중하지 않으므로 _token 및 데이터베이스에 필드가 아닌 것을 삽입하려고하면 오류가 발생하여 원하는 것을 설정합니다. 필터 등. 대량 할당을 사용하고 가능한 경우 코드를 적게 작성하기 때문에 저를 놀라게했습니다. 다행히 Eloquent의 create
메소드 는 save 메소드 (@xdazz가 위에서 인용 한 것)를 래핑하므로 마지막으로 생성 된 ID를 계속 가져올 수 있습니다.
public function store() {
$input = Request::all();
$id = Company::create($input)->id;
return redirect('company/'.$id);
}
테이블에 자동 증가 ID가있는 경우 insertGetId 메소드를 사용하여 레코드를 삽입 한 후 ID를 검색하십시오.
$id = DB::table('users')->insertGetId([
'email' => 'john@example.com',
'votes' => 0
]);
참조 : https://laravel.com/docs/5.1/queries#inserts
라 라벨
먼저 객체를 만든 다음 해당 객체의 속성 값을 설정 한 다음 객체 레코드를 저장 한 다음 마지막으로 삽입 된 ID를 가져옵니다. 와 같은
$user = new User();
$user->name = 'John';
$user->save();
// 마지막으로 삽입 된 아이디 얻기
$insertedId = $user->id;
echo $insertedId ;
laravel 5에서는 다음과 같이 할 수 있습니다.
use App\Http\Requests\UserStoreRequest;
class UserController extends Controller {
private $user;
public function __construct( User $user )
{
$this->user = $user;
}
public function store( UserStoreRequest $request )
{
$user= $this->user->create([
'name' => $request['name'],
'email' => $request['email'],
'password' => Hash::make($request['password'])
]);
$lastInsertedId= $user->id;
}
}
예를 들면 다음과 같습니다.
public static function saveTutorial(){
$data = Input::all();
$Tut = new Tutorial;
$Tut->title = $data['title'];
$Tut->tutorial = $data['tutorial'];
$Tut->save();
$LastInsertId = $Tut->id;
return Response::json(array('success' => true,'last_id'=>$LastInsertId), 200);
}
이것은 laravel 4.2에서 나를 위해 일했습니다.
$id = User::insertGetId([
'username' => Input::get('username'),
'password' => Hash::make('password'),
'active' => 0
]);
Laravel 4에서 마지막으로 삽입 된 id를 얻는 방법은 다음과 같습니다.
public function store()
{
$input = Input::all();
$validation = Validator::make($input, user::$rules);
if ($validation->passes())
{
$user= $this->user->create(array(
'name' => Input::get('name'),
'email' => Input::get('email'),
'password' => Hash::make(Input::get('password')),
));
$lastInsertedId= $user->id; //get last inserted record's user id value
$userId= array('user_id'=>$lastInsertedId); //put this value equal to datatable column name where it will be saved
$user->update($userId); //update newly created record by storing the value of last inserted id
return Redirect::route('users.index');
}
return Redirect::route('users.create')->withInput()->withErrors($validation)->with('message', 'There were validation errors.');
}
사용 insertGetId
삽입하고 삽입받을 id
동시에
에서 문서
테이블에 자동 증가 ID가있는 경우 insertGetId 메소드를 사용하여 레코드를 삽입 한 후 ID를 검색하십시오.
으로 Model
$id = Model::insertGetId(["name"=>"Niklesh","email"=>"myemail@gmail.com"]);
으로 DB
$id = DB::table('users')->insertGetId(["name"=>"Niklesh","email"=>"myemail@gmail.com"]);
자세한 내용은 https://laravel.com/docs/5.5/queries#inserts
모델을 저장 한 후 초기화 된 인스턴스의 ID는 다음과 같습니다.
$report = new Report();
$report->user_id = $request->user_id;
$report->patient_id = $request->patient_id;
$report->diseases_id = $request->modality;
$isReportCreated = $report->save();
return $report->id; // this will return the saved report id
insert ()
Example:
$ data1 = 배열 ( 'company_id'=> $ company_id, 'branch_id'=> $ branch_id);
$insert_id = CreditVoucher::insert($data1);
$id = DB::getPdo()->lastInsertId();
dd($id);
데이터베이스에 레코드를 저장 한 후 다음을 통해 ID 에 액세스 할 수 있습니다.$data->id
return Response::json(['success' => true, 'last_insert_id' => $data->id], 200)
Laravel 5.2에서는 가능한 한 깨끗하게 만들 것입니다.
public function saveContact(Request $request, Contact $contact)
{
$create = $contact->create($request->all());
return response()->json($create->id, 201);
}
Laravel의 경우 새 레코드를 삽입하고 호출 $data->save()
하면이 함수는 INSERT 쿼리를 실행하고 기본 키 값 (예 : 기본적으로 id) 을 반환합니다 .
다음 코드를 사용할 수 있습니다.
if($data->save()) {
return Response::json(array('status' => 1, 'primary_id'=>$data->id), 200);
}
후
$data->save()
$data->id
삽입 된 아이디를 알려줄 것입니다.
참고 : 자동 증가 열 이름이 sno 이면 사용 $data->sno
하지 말아야합니다.$data->id
$objPost = new Post;
$objPost->title = 'Title';
$objPost->description = 'Description';
$objPost->save();
$recId = $objPost->id; // If Id in table column name if other then id then user the other column name
return Response::json(['success' => true,'id' => $recId], 200);
당신은 이것을 할 수 있습니다 :
$result=app('db')->insert("INSERT INTO table...");
$lastInsertId=app('db')->getPdo()->lastInsertId();
데이터베이스에서 마지막으로 삽입 된 ID를 얻으려면 다음을 사용할 수 있습니다
$data = new YourModelName;
$data->name = 'Some Value';
$data->email = 'abc@mail.com';
$data->save();
$lastInsertedId = $data->id;
여기서 $ lastInsertedId는 마지막으로 삽입 된 자동 증분 ID를 제공합니다.
가장 짧은 방법은 아마도 refresh()
모델을 호출하는 것입니다 .
public function create(array $data): MyModel
{
$myModel = new MyModel($dataArray);
$myModel->saveOrFail();
return $myModel->refresh();
}
Eloquent Model 사용
$user = new Report();
$user->email= 'johndoe@example.com';
$user->save();
$lastId = $user->id;
쿼리 작성기 사용
$lastId = DB::table('reports')->insertGetId(['email' => 'johndoe@example.com']);
저장 후 $data->save()
. 모든 데이터가 안으로 푸시됩니다 $data
. 이것은 객체이므로 현재 행은 최근에 최근에 저장되었습니다 $data
. 그래서 마지막 insertId
에서 찾을 수 있습니다 $data->id
.
응답 코드는 다음과 같습니다.
return Response::json(array('success' => true, 'last_insert_id' => $data->id), 200);
이 질문은 약간 날짜가 있지만. 내 빠르고 더러운 솔루션은 다음과 같습니다.
$last_entry = Model::latest()->first();
그러나 자주 사용되는 데이터베이스의 경쟁 조건에 취약하다고 생각합니다.
선택적 방법은 다음과 같습니다.
$lastID = DB::table('EXAMPLE-TABLE')
->orderBy('id', 'desc')
->first();
$lastId = $lastProduct->id;
save 메소드를 호출하는 것과 동일한 객체로 마지막으로 삽입 된 id를 얻을 수 있습니다.
$data->save();
$inserted_id = $data->id;
따라서 간단하게 작성할 수 있습니다.
if ($data->save()) {
return Response::json(array('success' => true,'inserted_id'=>$data->id), 200);
}
public function store( UserStoreRequest $request ) {
$input = $request->all();
$user = User::create($input);
$userId=$user->id
}
Eloquent Model 사용
use App\Company;
public function saveDetailsCompany(Request $request)
{
$createcompany=Company::create(['nombre'=>$request->input('name'),'direccion'=>$request->input('address'),'telefono'=>$request->input('phone'),'email'=>$request->input('emaile'),'giro'=>$request->input('type')]);
// Last Inserted Row ID
echo $createcompany->id;
}
쿼리 작성기 사용
$createcompany=DB::table('company')->create(['nombre'=>$request->input('name'),'direccion'=>$request->input('address'),'telefono'=>$request->input('phone'),'email'=>$request->input('emaile'),'giro'=>$request->input('type')]);
echo $createcompany->id;
Laravel에서 Last Inserted Row id를 얻는 더 많은 방법 : http://phpnotebook.com/95-laravel/127-3-methods-to-get-last-inserted-row-id-in-laravel
참고 URL : https://stackoverflow.com/questions/21084833/get-the-last-inserted-id-using-laravel-eloquent
'IT' 카테고리의 다른 글
AJAX 응답이 쿠키를 설정할 수 있습니까? (0) | 2020.04.02 |
---|---|
C #에서 지역화를 사용하는 방법 (0) | 2020.04.02 |
동일한 속성에서 배경 이미지와 불투명도를 설정할 수 있습니까? (0) | 2020.04.02 |
Xcode : 프로세스 작업을 가져 오지 못했습니다. (0) | 2020.04.02 |
MemoryStream을 파일에 저장 및로드 (0) | 2020.04.02 |