laravel中的一些查询构造器(二)

310篇
一、upsert 方法用于插入不存在的记录,并使用您指定的新值更新已存在的记录。方法的第一个参数由要插入或更新的值组成,而第二个参数列出了唯一标识关联表中记录的列。该方法的第三个也是最后一个参数是一个列数组,如果数据库中已存在匹配的记录,则应更新这些列:

DB::table('flights')->upsert([
    ['departure' => 'Oakland', 'destination' => 'San Diego', 'price' => 99],
    ['departure' => 'Chicago', 'destination' => 'New York', 'price' => 150]
], ['departure', 'destination'], ['price']);

在上面的示例中,Laravel 会尝试插入两条记录,如果记录存在与 departure 和 destination 列相同的值,Laravel 将会更新 price 列的值。

二、有时您可能希望更新数据库中的现有记录,或者如果不存在匹配记录则创建它。 在这种情况下,可以使用 updateOrInsert 方法。 updateOrInsert 方法接受两个参数:一个用于查找记录的条件数组,以及一个包含要更该记录的键值对数组。

updateOrInsert 方法将首先尝试使用第一个参数的键和值对来查找匹配的数据库记录。 如果记录存在,则使用第二个参数中的值去更新记录。 如果找不到记录,将插入一个新记录,新增的数据是两个数组的集合:

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

三、更新 JSON 字段时,你可以使用 -> 语法访问 JSON 对象中相应的值。注意,此操作只能支持 MySQL 5.7+ 和 PostgreSQL 9.5+ :

$affected = DB::table('users')
              ->where('id', 1)
              ->update(['options->enabled' => true]);
注:如果你这个字段存的是json,可以更新里面的某个属性值,options是users表里面的字段,enabled是里面的一个值,例如:options里面的值是{"name": "phpstory", "enabled": true},可以修改里面的enabled值              
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值