php - updateOrCreate 数组中的多个属性( Eloquent )

标签 php mysql laravel eloquent

如果还没有满足以下条件的行,我正在尝试创建一个新行:

['employee_id' => $id, 'competence_id' => $getCompetenceKey]

或者如果它已经存在,我更新它并设置 ['value' => $getCompetenceValue]

所以我这样做了:

foreach($request->input('competence') as $getCompetenceKey => $getCompetenceValue) {
    EmployeeCompetence::updateOrCreate(
     ['employee_id' => $id,'competence_id' => $getCompetenceKey],
     ['value' => $getCompetenceValue]
    );
}

但它似乎不能正常工作:

https://i.imgur.com/CNPZ2AB.png

不过我可以这样做:

foreach ($request->input('competence') as $getCompetenceKey => $getCompetenceValue) {
    $e = EmployeeCompetence::where('employee_id', $id)->where('competence_id', $getCompetenceKey);
    if ($e->count() > 0) {
        $e->update(['value' => $getCompetenceValue]);
    } else {
            EmployeeCompetence::create(['employee_id' => $id,
                                      'competence_id' => $getCompetenceKey, 
                                              'value' => $getCompetenceValue]);
    }
}

但我真的很想知道为什么 updateOrCreate() 函数对我不起作用。

谢谢,

肯尼

最佳答案

第一列用于更新,但也应该在创建函数中传递。

例子:

EmployeeCompetence::updateOrCreate(
    [
      'employee_id'   => $id, 
      'competence_id' => $getCompetenceKey
    ],
    [
      'value'         => $getCompetenceValue,
      'employee_id'   => $id, 
      'competence_id' => $getCompetenceKey
    ]
);

关于php - updateOrCreate 数组中的多个属性( Eloquent ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46948069/

相关文章:

mysql 4路连接所有字段返回null

php - 如何为 htmlentities 设置标签异常(exception)?

php - 为处理可变数量的质量规范的 mySQL/PHP 应用程序构建数据结构的正确方法

php - 将特定行的数据传递给模态(laravel 数据表插件)

PHP 将 MySQL 行检索到数组中

php - woocommerce 自定义产品页面上的“添加到购物车”按钮和“立即购买”按钮

mysql - 在 Centos 7 中使用 Mariadb INNER JOIN 用户、数据库和数据库大小

php - 另一个不起作用的动态表(搜索引擎)

javascript - 了解几个 Cookie "Parameter"

php - Laravel Eloquent 对 mysql 表进行 AND 操作的方法