Laravel updateOrCreate 带有 where 子句

sn *_*n n 1 laravel eloquent

如何使用where 子句实现updateOrCreate函数。

例如。我只想在某些列包含特定值时更新字段,否则不更新。updateOrCreate函数可以吗?

小智 7

updateOrCreate是带有 where 子句的更新:

$user = User::updateOrCreate(
    [
        'id'    => $userId,
        'type'  => $userType,
    ], 
    [
        'name'  => $userName,
        'email' => $userEmail,
    ]
);
Run Code Online (Sandbox Code Playgroud)

如果存在匹配 和 的用户,此查询将使用$userName和更新用户。如果未找到匹配的用户,则使用、和来创建新用户。$userEmail$userId$userType$userId$userType$userName$userEmail

因此,第一个数组是必须匹配更新的“where-子句”,第二个数组是如果找到匹配项则应更新的值,如果没有匹配项,则在创建新用户时使用两个数组的合并成立。

请参阅此处的文档