简化 Laravel 的 updateOrCreate 方法来更新多行

Kla*_*lav 2 php laravel eloquent laravel-5.5

我正在使用 updateOrCreate 更新多行。这可能会变得很难看。有没有一种聪明的方法来简化这个过程,或者该方法是否提供了保存多行的方法?

RequestData::updateOrCreate(['r_id' => $rid, 'meta_key' => 'q1'], ['meta_value' => Input::get('q1')]);
RequestData::updateOrCreate(['r_id' => $rid, 'meta_key' => 'q2'], ['meta_value' => Input::get('q2')]);
RequestData::updateOrCreate(['r_id' => $rid, 'meta_key' => 'q3'], ['meta_value' => Input::get('q3')]);
RequestData::updateOrCreate(['r_id' => $rid, 'meta_key' => 'q4'], ['meta_value' => Input::get('q4')]);
RequestData::updateOrCreate(['r_id' => $rid, 'meta_key' => 'q5'], ['meta_value' => Input::get('q5')]);
Run Code Online (Sandbox Code Playgroud)

Pep*_*ier 7

您始终可以将其包装在 for 循环中。将整个事情包装在事务中也可以加快速度。

\DB::transaction(function() use ($rid) {
    for($i = 1; $i <= 5; $i++) {
      RequestData::updateOrCreate(['r_id' => $rid, 'meta_key' => "q$i"], ['meta_value' => Input::get("q$i")]);
    }
});
Run Code Online (Sandbox Code Playgroud)