[php] 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를 반환하고 싶지만 얻는 방법을 모르겠습니다.
친절하다!
답변
후 저장 , $data->id
마지막 ID를 삽입해야합니다.
$data->save();
$data->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
]);
답변
라 라벨
먼저 객체를 만든 다음 해당 객체의 속성 값을 설정 한 다음 객체 레코드를 저장 한 다음 마지막으로 삽입 된 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);
}