Laravel 8 Eloquent upsert 插入新记录

2024-03-26

我正在尝试了解 Laravel 8 的新功能upsert.

这是我的示例表:

flights
id (primary key and auto Inc)
departure
destination
price

在我的代码中:

App\Models\Flight::upsert([
    ['departure' => 'Oakland', 'destination' => 'San Diego', 'price' => 99],
    ['departure' => 'Chicago', 'destination' => 'New York', 'price' => 150]
], ['departure', 'destination']);

这是 Laravel 文档中的示例表,它有一个键 id。

我想更新记录,如果两者都departure and destination是匹配的,但这些字段不是唯一的。

每次我运行代码时,它都会插入一条新记录但不会更新。如何获得upsert在职的?

我需要两者都做吗departure and destination独特还是会在不使它们独特的情况下发挥作用?

另外,如果我需要使这两个字段都唯一,那么我该如何在迁移中做到这一点?


我遇到了同样的问题,我将第二个参数设置为“复合唯一”。

将其添加到迁移中

$table->unique(['departure','destination']); 

问题应该消失了

文档

从 Laravel 9.x 开始,雄辩的文档页面 https://laravel.com/docs/9.x/eloquent#upserts已更新以提及以下事实:upsert()取决于数据库唯一约束:

除 SQL Server 之外的所有数据库都要求 upsert 方法的第二个参数中的列具有“主”或“唯一”索引。此外,MySQL 数据库驱动程序会忽略 upsert 方法的第二个参数,并始终使用表的“主”和“唯一”索引来检测现有记录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 8 Eloquent upsert 插入新记录 的相关文章

  • 在 Laravel 中自动删除相关行(Eloquent ORM)

    当我使用以下语法删除行时 user gt delete 有没有办法附加某种回调 以便它可以例如自动执行此操作 this gt photo gt delete 最好在模型类内 我相信这是一个完美的用例雄辩事件 https laravel co
  • 如何在 Laravel 中使用 Vue 路由器?

    我使用 laravel9 和 vue3 进行开发 我的问题很简单 但是路径设置不太顺利 当我访问网址时localhost 8080 tasks 此 url 返回 404 未找到 我收到以下类型错误 获取http localhost 8000
  • laravel 验证 required_with 和 required_with_all 之间有什么区别

    我已经尝试过看看https laravel com docs 5 4 validation https laravel com docs 5 4 validation但我仍然不明白两者之间有什么区别 全部必需 and 必需 无 任何人都可以
  • 致命错误:发送表单时未找到“App\Http\Controllers\Input”类

    我正在尝试发送一封包含来自 Laravel 应用程序的表单的电子邮件 当你点击提交时 它会抛出上述错误 致命错误 找不到类 App Http Controllers Input 不知道为什么 因为我没有 也不知道我需要有一个输入控制器 或者
  • 针对 Laravel 后端的 Angular Auth

    我正在使用 Laravel 创建一个应用程序 并构建一个小型内部 API 来连接到 Angular 前端 我的身份验证工作正常 但想确保这是一种可接受的用户登录方式 并确保一切都是安全的 会话控制器 public function inde
  • 如何使用 jenssegers/laravel-mongodb 包获取文档集合中的最大和最小日期?

    我有一组如下所示的文档 id ObjectId 5826182e2e94e0aefc541924 calls call date 2016 08 16 00 00 00 000 updated at ISODate 2016 11 11T1
  • 如何传递数据到 Laravel 中查看?

    我将数据传递到我的刀片视图return View make blog posts 在我的刀片视图中 我正在尝试运行 foreach posts as post 我最终得到一个错误说 posts没有定义 我的问题是如何 posts数组被调用
  • Laravel Eloquent 在 with() 函数中使用别名

    再会 laravel 中使用 with 函数时是否可以使用别名 举个例子 posts Post where condition gt with user as friend gt get 简短的回答是否定的 但您可以定义与要使用的别名的关系
  • 未捕获的异常:无法找到 Mix 文件

    我正在尝试在本地系统中运行 laravel 应用程序 我已遵循https gist github com hootlex da59b91c628a6688ceb1 https gist github com hootlex da59b91c
  • Jwt 令牌是唯一的

    我正在使用 JWT 网络令牌系统 我能够成功生成令牌 我在 Laravel 中创建 JWT 令牌 如下所示 我正在使用以下技术堆栈 拉拉维尔 5 2 http laravel com 框架 JWT 包裹 https github com t
  • 流浪家园慢

    我有一个基于 Laravel Homestead 的 vagrant 服务器 用于在本地测试我的 Laravel 站点 大部分情况下它运行得很好 然而 最近 我遇到了问题 它会停止几分钟 典型 到几个小时 罕见 这种情况每 15 分钟左右就
  • Laravel 5.2 CORS,GET 不适用于预检选项

    可怕的 CORS 错误 跨源请求被阻止 同源策略不允许读取 远程资源位于http localhost mysite api test http localhost mysite api test 原因 CORS 标头 Access Cont
  • Laravel:将变量传递给多个视图

    我想动态地制作菜单 因此显示 本月电影 而不是 十二月电影 参见图片 十二月是每月更新的当前月份 我的问题是菜单不属于特定的路由 控制器 因此我无法像其他路由一样传递变量 例子 month Carbon now gt format F re
  • Laravel,2 个域中的 2 个项目同一会话

    我正在 2 个不同的域 domain1 tld 和域 2 tld 中创建 2 个项目 domain1 tld 是主要事件生成器页面 domain2 tld 是其事件之一 我想共享相同的会话 它们实际上共享相同的数据库和相同的 apache
  • 我应该在 laravel 5.1 中将模型保存事件监听器放在哪里

    Laravel 文档说我应该将模型事件放在EventServiceProvider boot 像这样的方法 public function boot DispatcherContract events Raisefund saved fun
  • Laravel - 雄辩地覆盖自定义时间戳......为什么?

    我正在制作一个库存管理系统 当产品缺货时 我会在表中输入一个条目 并记下 oos at 字段和日期 时间 后来 当它回到库存时 我找到该条目并更新 restocked at 时间戳字段 但是 当我执行第二个操作时 我的 oos at 字段被
  • 如何防止机器人程序和垃圾邮件 API 请求?

    我正在使用react native 开发一个Android 应用程序 该应用程序与我正在为该应用程序开发的API 进行通信 该 API 是使用 Laravel 和 Laravel Passport 构建的 我知道 Android 应用程序可
  • SQLSTATE[HY000] [2002] 连接尝试失败,因为连接方在一段时间后没有正确响应,

    我尝试连接 2 个数据库Laravel 5 6项目 但我遇到这样的错误 SQLSTATE HY000 2002 连接尝试失败 因为连接方在一段时间后没有正确响应 或者由于连接的主机未能响应而建立的连接失败 SQL 从中选择 mt merch
  • 如何在 vue.js 中使用 SVG.js 插件?

    我在用svg js在我的 Laravel 项目中运行vue js 这就是我使用的方式svg js Step 1 安装svg js作为我的 vue 应用程序中的插件 import svgJs from svg js dist svg expo
  • Laravel 雄辩的 withCount() 应该比 with() 慢

    所以我问这个的原因是在我当前的应用程序中withCount 与仅通过以下方式获取关系的所有数据相比 响应时间几乎增加了三倍with 并只是从前端获取长度 javascript 我认为使用的要点withCount 是为了加快查询速度 但也许我

随机推荐

  • 打印 C 字符串(UTF-8)时的 NSLog() 与 printf()

    我注意到 如果我尝试使用格式说明符 s 打印包含 UTF 8 字符串表示形式的字节数组 printf 说得对 但是NSLog 得到它乱码 即 每个字节按原样打印 因此例如 被打印为2个字符 这很奇怪 因为我一直认为NSLog 只是print
  • 如何根据条件 $push 字段?

    我试图在 MongoDB 聚合管道的 group 阶段有条件地将字段推入数组 本质上 我有包含用户名的文档以及他们执行的一系列操作 如果我将用户操作分组如下 group id name user name actions push acti
  • rows_merged在compactionhistory中意味着什么?

    当我发出 nodetool compactionhistory I get compacted at bytes in bytes out rows merged 1404936947592 8096 7211 1 3 3 1 什么是 1
  • 允许在 ckeditor 中嵌入 oembed 标签

    我想将 oembed 标签放入 TYPO3 的 ckeditor RTE 中 这样我想将像 Instagram Facebook 或 Twitter 这样的社交帖子放入一些新闻文章中 在一些文本的中间 为此 我激活了 ckeditor 的嵌
  • 快速连续旋转动画不那么连续

    这是我的代码 目的是连续旋转名为 swirls l 的 UIImageView 但是 每次旋转开始 结束之间都会有一个小暂停 我已经浏览了每一个动画教程 但无法弄清楚错误是什么 let fullRotation CGFloat M PI 2
  • 库中是否可以有 SyncAdapter?

    我正在开发一个将由多个应用程序使用的库 图书馆需要进行网络同步 我已经创建了一个存根提供商和帐户 如此处所述 http developer android com training sync adapters index html 问题是
  • MongoDB 查询注释以及用户信息

    我正在使用 nodejs 和 mongod 不是 mongoose 创建一个应用程序 我有一个问题让我头痛了几天 有人请建议一个方法 我有一个像这样的 mongodb 设计 post id ObjectId picture some url
  • Django - 使用 ManyToManyField 进行反向查找

    我正在尝试遵循 django 文档中的代码 class Person models Model name models CharField max length 128 def unicode self return self name c
  • 相当于 float128

    如何使用等效的 float128在Python中 我应该使用什么精度decimal getcontext 我的意思是 精度是以小数位还是位指定的 from decimal import getcontext prec 34 or 128 是
  • 如何在 Selenium Python 中设置 Chrome 的首选项

    我可以如下设置 Firefox 的首选项 set preference profile set preference set preference network http response timeout 30 set preferenc
  • 如何为特定类别自定义 AutoFixture 行为

    我需要启用 AutoFixture 来创建具有循环引用的类型实例 来自第三方提供的 API 为此 我可以删除默认的ThrowingRecursionBehavior如下所示 public class RecursiveObjectCusto
  • Backbone JS 模型和集合 URL

    如果我有一个名为 Book 的模型和一个名为 Library 的集合 定义如下 Book app Book Backbone Model extend defaults title No title author Unknown Libra
  • c - realloc() 在 Windows 7 中成功,但在 Windows XP 中失败,为什么?

    所以我的这段代码有以下内容realloc block char ptr NULL void realloc ptr unsigned int new size void temp NULL temp realloc ptr new size
  • 从 TFS 获取文件更改历史记录以实现自定义“责备”异常行为

    我正在尝试采取某种方法来确定当我们的应用程序 在工作中 抛出异常时该 责备 谁 当然这可能是我造成的 但我可以接受 但要做到这一点 我需要 TFS 中文件的历史记录 以便我可以检查谁最后在异常行处进行了更改 当然 它并不总是在插入错误更改的
  • 使用 R 传递多个搜索请求来抓取表

    我尝试使用名字和姓氏在网站上进行多次搜索 https npiregistry cms hhs gov registry https npiregistry cms hhs gov registry 然后创建输出的数据框 我发现这与中描述的类
  • VS 2008 中“添加到观看”的键盘快捷键

    是否有任何键盘快捷键可以添加突出显示的变量以在 VS IDE 中观看 右键单击并在很长的下拉菜单中选择 添加到观看 选项需要一些时间 这很烦人 谢谢 苏雷什 默认情况下不是 您可以添加一项 工具 选项 环境 键盘并在 显示命令 框中输入 w
  • 如何使用 Commons Exec 将命令的输出捕获为字符串?

    Commons exec 提供了一个 PumpStreamHandler 它将标准输出重定向到 Java 进程的标准输出 如何将命令的输出捕获到字符串中 他就是我找到的 import java io ByteArrayOutputStrea
  • 大多数为 emacs 开发的 Magit/github 扩展,用于拉取请求

    我对拉取请求 编辑问题并将它们与提交绑定以及其他我通常必须使用的东西特别感兴趣命令行上的集线器 https github com github hub为了 然而 我已经开始使用 Magit 并且非常喜欢它的键绑定和通用界面 这部分我也想留在
  • 如何使用pyspark从HDFS读取docx/pdf文件?

    我想使用 pyspark 从 Hadoop 文件系统读取 DOCX PDF 文件 目前我正在使用 pandas API 但在 pandas 中我们有一些限制 我们只能读取 CSV JSON XLSX 和 HDF5 它不支持任何其他格式 目前
  • Laravel 8 Eloquent upsert 插入新记录

    我正在尝试了解 Laravel 8 的新功能upsert 这是我的示例表 flights id primary key and auto Inc departure destination price 在我的代码中 App Models F