Alen
Alen

Reputation: 1291

How to get last inserted id through save() method in laravel

I know to get the last id I can use insertGetId() but I want to know how can I get the last inserted id through save() method.

order = new Store_order;
    $order->invoice_id = $signed['invoice_id'];
    $invoice = $order->save()['so_id'];

I used this but it returns null value

Upvotes: 2

Views: 19831

Answers (6)

Majbah Habib
Majbah Habib

Reputation: 8558

You can get the last inserted id by the following codes.

Using Laravel Eloquent

$order = new Store_order();
$order->invoice_id = $signed['invoice_id'];
$order->save();

$lastInsertedId = $order->so_id;     //now getting Last inserted id
echo $lastInsertedId; 

Provided that $order->so_id means last inserted id of the given object where so_id is the primary key of the table.

Upvotes: 0

Intelixence
Intelixence

Reputation: 1

In case of you did overwride the name of primary key in the model as in next case:

protected $primaryKey = 'your_table_id_name';

use:

$id = $your_variable_save->your_table_id_name

if not:

$id = $your_variable_save->id

Upvotes: 0

Rashi Goyal
Rashi Goyal

Reputation: 941

Try this once it worked for me where $mode->save(); was only returning true.

$mylastid = DB::getPdo()->lastInsertId();

Upvotes: 0

Amit Mandaviya
Amit Mandaviya

Reputation: 49

$ObjTable->nane = $name;
$ObjTable->save();
echo $ObjTable->id;

this will be display last inserted id.

Upvotes: -1

TIGER
TIGER

Reputation: 2905

After $order->save(), $order->so_id should be the last id inserted. Your code should be as below.

$order = new Store_order;
$order->invoice_id = $signed['invoice_id'];
$order->save();
$invoice = $order->so_id;

Upvotes: 10

Muthu17
Muthu17

Reputation: 1541

You can get it by like below :

$order = new Store_order;
$order->invoice_id = $signed['invoice_id'];
$invoice = $order->save();
echo $invoice->so_id;

in this case you no need to store in one variable and then access it, You can get the inserted records by calling the model object itself :

    $order = new Store_order;
    $order->invoice_id = $signed['invoice_id'];
    $order->save();
    // echo $order; => will return entire stored last record.
    echo $order->so_id;

Make sure so_id is autoincrement.

Upvotes: 4

Related Questions