К данному коду может иногда поступать много запросов подряд и код отрабатывать не успевает.
При изменении полей, ткущая запись *мягко* удаляется и создается новая.
try {
DB::beginTransaction();
$model = $this->model
->where('ident_id', '=', $model->ident_id)
->whereNull('deleted_at')
->orderBy('created_at', 'desc')
->withTrashed()
->sharedLock()
->first();
$fieldType = $this->getColType($table, $fieldName);
if ($fieldType == "decimal" && strpos($fieldValue, ",") !== false) {
$fieldValue = str_replace(",", ".", $fieldValue);
}
$model = $model->fill([$fieldName => $fieldValue])->saveAsNew();
DB::commit();
} catch (Exception $ex) {
DB::rollback();
dd($ex);
}
public function saveAsNew()
{
if ($this->isDirty([
'name',
'ek',
'vk',
'category_id',
'manufacturers_id',
'size',
// 'vendor_code',
'comfort_grade',
'color',
'option1',
])
) {
/** @var Product $newModel */
$newModel = $this->replicate();
$newModel->original_id = $this->id;
$originals = $this->getOriginal();
if ($newModel->save()) {
$this->setRawAttributes($originals);
$this->delete();
return $newModel;
} else {
return false;
}
}
$this->save();
return $this;
}
В данном случае происходит дублирование записей.
Мне нужно, чтоб только после окончания транзакции происходил следующий селект модели.