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

时间:2018-01-22 07:50:48

标签: php mysql laravel-5

对于带int的auto increment id,在save()方法之后返回id。

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

对于这种情况,您必须更改触发器,以便使用新值更改last_insert_id

Is there a way to get last inserted id of a NON - auto incremented column in MySQL?

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