[Php] Laravel, obtenir le dernier identifiant d'insertion en utilisant Eloquent


Answers

xdazz raison dans ce cas, mais pour le bénéfice des futurs visiteurs qui pourraient utiliser DB::statement ou DB::insert , il y a un autre moyen:

DB::getPdo()->lastInsertId();
Question

J'utilise actuellement ce code pour insérer des données dans une table:

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);
    }
}

Et je veux retourner le dernier identifiant inséré mais je ne sais pas comment l'obtenir.

Sincères amitiés!




En laravel 5: vous pouvez le faire:

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;
    }
}



Pour obtenir le dernier identifiant inséré dans la base de données Vous pouvez utiliser

$data = new YourModelName;
$data->name = 'Some Value';
$data->email = 'abc@mail.com';
$data->save();
$lastInsertedId = $data->id;

$ lastInsertedId vous donnera le dernier identifiant d'incrément automatique inséré.




Si la table possède un ID auto-incrémenté, utilisez la méthode insertGetId pour insérer un enregistrement, puis récupérer l'ID:

    $id = DB::table('users')->insertGetId(
      ['email' => 'john@example.com', 'votes' => 0]
    );

Reportez-vous à: https://laravel.com/docs/5.1/queries#inserts




En utilisant un modèle éloquent

$user = new Report();        
$user->email= 'johndoe@example.com';  
$user->save();
$lastId = $user->id;

Utilisation de Query Builder

$lastId = DB::table('reports')->insertGetId(['email' => 'johndoe@example.com']);



voici un exemple

   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);
   }



Pour Laravel, Si vous insérez un nouvel enregistrement et appelez $data->save() cette fonction exécute une requête INSERT et renvoie la valeur de la clé primaire (c'est-à-dire l' ID par défaut).

Vous pouvez utiliser le code suivant:

if($data->save()) {
    return Response::json(array('status' => 1, 'primary_id'=>$data->id), 200);
}



Après avoir enregistré un enregistrement dans la base de données, vous pouvez accéder à id par $data->id

return Response::json(['success' => true, 'last_insert_id' => $data->id], 200)



Tu peux le faire:

$result=app('db')->insert("INSERT INTO table...");

$lastInsertId=app('db')->getPdo()->lastInsertId();



Utilisez insertGetId pour insérer et obtenir l' id inséré en même temps

De la doc

Si la table possède un ID auto-incrémenté, utilisez la méthode insertGetId pour insérer un enregistrement, puis récupérer l'ID:

Par Model

$id = Model::insertGetId(["name"=>"Niklesh","email"=>"myemail@gmail.com"]);

Par DB

$id = DB::table('users')->insertGetId(["name"=>"Niklesh","email"=>"myemail@gmail.com"]);

Pour plus de détails: doc




Links