如何通过 laravel 中的 save() 方法获取最后插入的 id

Posted

技术标签:

【中文标题】如何通过 laravel 中的 save() 方法获取最后插入的 id【英文标题】:How to get last inserted id through save() method in laravel 【发布时间】:2017-08-06 00:23:36 【问题描述】:

我知道可以使用insertGetId() 获取最后一个id,但我想知道如何通过save() 方法获取最后插入的id。

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

我使用了这个,但它返回 null

【问题讨论】:

为什么不使用关系? 我知道如何处理关系。我想知道save()方法! 在所有情况下,当您保存时,它不会返回发票对象。你要找哪个身份证?订单编号? so_id 是数据库结构中的 PRIMARY KEY 和 AUTO_INCREMENT。所以我想得到那个so_id 这篇文章可能对你有所帮助:***.com/questions/21084833/… 【参考方案1】:

$order->save() 之后,$order->so_id 应该是最后插入的 id。您的代码应如下所示。

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

【讨论】:

save() 函数返回 null @MinaAbadir 如果 id 不是自动递增的,这将始终返回 0。 请至少在 tinker 上测试您的代码。 save() 方法不返回任何内容。这里没有关于自动增量的内容。 实际上save() 返回布尔值,无论是真还是假,我相信。如果已成功插入值,则save() 返回1,否则返回0 它也可以在 Lumen 8.0 版本中使用。谢谢【参考方案2】:

您可以通过以下方式获得它:

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

在这种情况下,您无需存储在一个变量中然后访问它,您可以通过调用模型对象本身来获取插入的记录:

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

确保 so_id 是自动递增的。

【讨论】:

$order->id 工作【参考方案3】:
$ObjTable->nane = $name;
$ObjTable->save();
echo $ObjTable->id;

这将显示最后插入的 id。

【讨论】:

【参考方案4】:

您可以通过以下代码获取最后插入的id

使用 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; 

假设 $order->so_id 表示给定对象的最后插入 id,其中 so_id 是表的主键。

【讨论】:

【参考方案5】:

在 $mode->save(); 对我有用后试试这个只返回 true。

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

【讨论】:

【参考方案6】:

如果您确实覆盖了模型中的主键名称,如下一种情况:

protected $primaryKey = 'your_table_id_name';

使用:

$id = $your_variable_save->your_table_id_name

如果没有:

$id = $your_variable_save->id

【讨论】:

以上是关于如何通过 laravel 中的 save() 方法获取最后插入的 id的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 中的函数后 save() 出错

无法在模型对象 Laravel 上调用 SAVE 方法

Laravel - 调用未定义的方法 TrainingFacade::save()

Laravel/Ardent - 在 save() 上,错误:关系方法必须返回 Illuminate 类型的对象

是否有可能暂时禁用Laravel中的事件?

laravel save() 方法是不是抛出异常?