laravel eloquent 更新或创建

laravel eloquent update or create

您好,我正在使用它根据 3 个值插入或更新记录:

DynamicTable::updateOrCreate(
                [
                    'component_id' => $getComponentMainId->id, 
                    'generated_workflow_id' => $created_generated_form['id'], 
                    'form_id'=> $form_id,
                ],
                [
                    'number_of_rows', $mainRows,
                    'row_indexes' => $indexes
                ]
            );

如果找到记录,它将更新行数和索引,否则它会插入所有字段,但问题是它只创建或更新 row_indexes 而没有添加或更新 number_of_rows allthough字段列在 protected $fillable 中。 两个查询都是:

bindings: (3) [3709, 52, 316]
query: "select * from `dynamic_tables` where (`component_id` = ? and `generated_workflow_id` = ? and `form_id` = ?) and `dynamic_tables`.`deleted_at` is null limit 1"

bindings: (6) [3709, 52, 316, '0,2', '2022-02-04 10:48:34', '2022-02-04 10:48:34']
query: "insert into `dynamic_tables` (`component_id`, `generated_workflow_id`, `form_id`, `row_indexes`, `updated_at`, `created_at`) values (?, ?, ?, ?, ?, ?)"

有什么我没注意的吗

您的语法有误:

'number_of_rows', $mainRows

我假设应该是:

'number_of_rows' => $mainRows
DynamicTable::updateOrCreate([
        'component_id' => $getComponentMainId->id, 
        'generated_workflow_id' => $created_generated_form['id'], 
        'form_id'=> $form_id,
    ],[
        'number_of_rows' => $mainRows,
        'row_indexes' => $indexes
]);