首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel在插入/更新后获取数据

Laravel在插入/更新后获取数据
EN

Stack Overflow用户
提问于 2021-12-13 15:28:35
回答 2查看 1.4K关注 0票数 3

我有这部分代码:

代码语言:javascript
复制
$seller = Seller::where('tel', '=', $request->tel)->where('confirmed', '=', 1)->first();

if($seller){
    $seller = Seller::where('tel',  $request->tel)->update($input); //update
    return response()->json(['message'=>'Seller Updated successfully!', 'data'=> $seller], 200);
} else {
    $seller = Seller::create($input); //create
    return response()->json(['message'=>'Seller created successfully!', 'data'=> $seller], 200);
}

现在想返回插入或更新的数据作为回应,但谷歌和看到很多帖子后,所有尝试都失败了,我怎么能这样做呢?没有最后插入id

但是返回布尔值:

代码语言:javascript
复制
{
    "message": "Seller updated successfully!",
    "data": 1
}

How to get last insert id in Eloquent ORM laravel

大多数主题都希望返回id,但我需要所有的数据。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-13 15:45:52

你问题的关键是理解3种有说服力的方法。

  • create() -返回插入的模型instance.
  • update() -根据更新statement.
  • refresh()的成功返回一个布尔值(0或1) -通过请求数据库来刷新模型实例.

如下面的完整示例所示,您需要以不同的方式对待create()update(),因为它们返回的内容不同。

对于create(),您可以保持原样。但是update()需要修改为而不是重新分配$seller变量。

这将停止任何错误,但它将返回旧数据。为了返回新数据,需要刷新模型(refresh())。

代码语言:javascript
复制
$seller = Seller::where('tel', '=', $request->tel)->where('confirmed', '=', 1)->first();

if ($seller){
    // DO NOT reassign since update() returns boolean
    Seller::where('tel',  $request->tel)->update($input); //update
    
    $seller->refresh(); // Refresh it here
    return response()->json(['message'=>'Seller Updated successfully!', 'data'=> $seller], 200);
} else {
    // This one is good since create() returns newly created model.
    $seller = Seller::create($input); //create
    return response()->json(['message'=>'Seller created successfully!', 'data'=> $seller], 200);
}
票数 3
EN

Stack Overflow用户

发布于 2021-12-13 16:04:59

这是因为您正在用update方法的响应覆盖您的var $sellers。更新()返回一个布尔值。因此,您不必在更新的位置将返回值赋值给$seller变量。

若要返回更新的卖方模型,请在响应中使用return ()方法。$seller->fresh()

代码语言:javascript
复制
$seller = Seller::where('tel', '=', $request->tel)->where('confirmed', '=', 1)->first();

if ($seller){
    Seller::where('tel',  $request->tel)->update($input); //update
    return response()->json([
        'message' => 'Seller Updated successfully!', 
        'data'=> $seller->fresh()
      ], 200);
} else {
    $seller = Seller::create($input); //create
    return response()->json(['message' => 'Seller created successfully!', 'data'=> $seller], 200);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70337073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档