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

标签 php laravel

我有这部分代码:

$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);
}

现在想返回插入或更新的数据作为响应,但是google了很多帖子,都试过了,怎么办?没有最后插入的 id

但返回 bool 值:

{
    "message": "Seller updated successfully!",
    "data": 1
}

How to get last insert id in Eloquent ORM laravel

大多数主题都想返回 id 但我想要所有数据。

最佳答案

你的问题的关键是理解 3 Eloquent 方法。

  • create() - 返回插入的模型实例。
  • update() - 根据更新语句的成功返回 bool 值(0 或 1)。
  • refresh() - 通过重新查询数据库来刷新模型实例。

在下面的完整示例中,您需要区别对待 create()update(),因为它们返回不同的东西。

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

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

$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);
}

关于php - Laravel 在插入/更新后获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70337073/

相关文章:

php - 在单页 woocommerce 中删除价格中的文本

php - Laravel htmlspecialchars() 期望参数 1 是字符串,我的项目中给出的对象?

mysql - 具有 DATE mysql 函数的 Laravel 查询生成器

laravel - .env.testing 文件在为 laravel 应用程序运行 phpunit 测试时被忽略

php - Eloquent 列列表以数组作为值?

javascript - 在 vue.js 中使用 props 在每个页面上设置不同的文本

php - jquery $.post 从 php 返回的数据为空

php - 简化列表项选择性 jQuery 切换的代码

php - 在其他两列为零的列中查找最小值

php - PHP语法错误: Unexpected ']' [closed]