为了账号安全,请及时绑定邮箱和手机立即绑定

创建一个没有属性的空 Laravel 模型实例,但仍然获取 id

创建一个没有属性的空 Laravel 模型实例,但仍然获取 id

PHP
动漫人物 2023-06-24 15:46:20
基本上,我正在创建一个 Article 实例:$article = new Article();//Returns null$id = $article->id();然而,这会返回一个空对象。我想做的是创建一篇文章并在执行之前获取其 id:$article->save();尝试创建文章不起作用,因为它需要提供值或具有默认值:$article = Article::create();我正在考虑的方法是:$latest_id = Article::latest()->first()->id;但我不确定这是否正确,或者是否有更好的方法。
查看完整描述

3 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

这是数据库中列的id值,因为你还没有保存,数据库中什么也没有(你无法获取它)。id


我想您需要执行一些可能在某些时候失败或被取消的任务,对于这种情况,有一个解决方法,例如:


DB::beginTransaction();


try {

    $article = new Article();

    $article->fields = 'example';

    $article->save();


    // Anything needing ID here...


    DB::commit();

} catch (\Exception $e) {

    DB::rollback();

    // Handle or re-throw:

    throw $e;

}


查看完整回答
反对 回复 2023-06-24
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

您无法获取尚未保存的对象/模型的 ID。

在这种情况下,ID 不存在,您可以找到最新的 ID 并将该 ID 加一,但是您可能会在某些竞争条件下运行,当另一个向该表添加新元素的脚本速度更快时,然后您稍后保存的 ID 错误。

如果您需要 ID 来存储该模型的引用,正确的方法是先保存模型,然后保存引用。

如果您需要 ID 来保存文件名中包含 ID 的文件,那么您在数据库中保存为文本的内容可以先保存模型(以检索 ID),然后再次保存包含缺失信息的模型。


查看完整回答
反对 回复 2023-06-24
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

初始化一个空模型来获取它的 id 没有帮助,因为 idid总是在运行时计算。请记住,系统可能n同时收到请求。

nullable如果您想创建一个空行来获取保留,则需要创建这些字段id

或者,如果您只需要存储在数据库表中的最后一个 id,则可以通过以下方式执行此操作,但这可能会导致数据中出现一些不匹配和不一致:

$latest_id = Article::latest()->first()->id;


查看完整回答
反对 回复 2023-06-24
  • 3 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信