Laravel updateOrInsert 的第一个参数可以用作 OR 而不是对值进行配对吗

Posted

技术标签:

【中文标题】Laravel updateOrInsert 的第一个参数可以用作 OR 而不是对值进行配对吗【英文标题】:Can the first argument of Laravel updateOrInsert be used as OR instead of pair the values 【发布时间】:2021-03-10 18:26:28 【问题描述】:

来自 Laravel 文档:

updateOrInsert 方法将尝试使用第一个参数的列和值对来定位匹配的数据库记录。

DB::table('users')
->updateOrInsert(
    ['email' => 'john@example.com', 'name' => 'John'],
    ['votes' => '2']
);

是否可以不同时检查两条记录是否为真,例如'email' => 'john@example.com''name' => 'John',我们只检查一个这样的'email' => 'john@example.com''name' => 'John'

这样的事情是不可能的(或者我不知道怎么做)

 DB::table('users')
->updateOrInsert(
    ['email' => 'john@example.com','OR', 'name' => 'John'],
    ['votes' => '2']
);

这是可以通过某种方式完成的吗?

【问题讨论】:

根据代码,在这种情况下您不能使用 OR:github.com/laravel/framework/blob/master/src/Illuminate/… 不,你不能。您需要进行 2 次查询 【参考方案1】:

简短的回答:没有

根据code,只有一个where,它需要一个属性数组,所以你不能在这里做一个OR子句。

【讨论】:

以上是关于Laravel updateOrInsert 的第一个参数可以用作 OR 而不是对值进行配对吗的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.5 检索嵌套关系中的第一条记录

如何使用 Carbon 获取上个月的第一天和最后一天 - Laravel

如何在 CodeIgniter 中为 Laravel 中的第一个项目定义子域路由?

我的第一个带有 Docker 的 Laravel 开发环境的权限问题

如何从 laravel 分页的第一页中删除查询字符串页面?

只有 JSON 中的第一个值保存到数据库 - Laravel