[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
]);

참조 : 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);
}