自定义 ID 主键无法在 Laravel save() 方法之后检索



对于带有 int 的自动增量 id,在 save() 方法之后,它返回 id。

但它不会返回由 mysql 触发器完成的自定义增量 id 主键。

$productData = new Product($request->all());
$productData->save($productData->getAttributes());
return $productData->id;

在这种情况下如何检索自定义ID?

这超出了 laravel,因为自动递增字段由您的数据库提供,而 laravel 无法从您的数据库中获取last_insert_id。

在这种情况下,您必须更改触发器,使其last_insert_id使用新值更改:

有没有办法在 MySQL 中获取 NON - 自动递增列的最后插入 ID?

注意:您可能需要确保 Model 的incrementingtrue,以便它尝试从数据库中获取 id。如果您尚未在模型中设置此字段,请不要设置它。默认情况下,Model 能够在插入后自动从数据库中获取值。

您需要刷新模型实例。举例说明:

$p = (new Product($request->all()))->save();
return $p->fresh()->id;

最新更新