如何通过 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 - 调用未定义的方法 TrainingFacade::save()