I need code to update multiple rows of a database, something like this:
UPDATE values SET data='{"options":["male","female"],"default":"male"}' where project_id=1 and id=1;
UPDATE values SET data='{"options":["male","female"],"default":"male"}' where project_id=1 and id=2;
UPDATE values SET data='{"options":["male","female"],"default":"male"}' where project_id=1 and id=3;
After a few hours, I can get the result with something like this in the laravel framework:
$values = Value::where('project_id', $id)->get();
$sql = "";
foreach($request->fields as $field) {
if(!empty($field->default)) {
foreach($values as $value) {
$data = json_decode($value->data, true);
$data["default"] = $field->default;
$data = json_encode($data);
$sql .= "update ".DB::connection()->getDatabaseName().".values set data='".$data."' where id="."$value->id;";
}
}
}
DB::unprepared($sql);
but this code is not good practice! So my question is:
Is there any way ORM can do it better ?!
source
share