Изучение различных методов увеличения и уменьшения значений с помощью уникальных идентификаторов в Laravel

В Laravel существует несколько подходов к увеличению и уменьшению значений, связанных с уникальными идентификаторами. Независимо от того, создаете ли вы систему голосования, отслеживаете инвентарь или реализуете любую другую функцию, требующую подсчета и корректировки значений, эта статья познакомит вас с различными методами достижения этой цели в Laravel. Итак, давайте погрузимся и исследуем!

Метод 1: методы Eloquent Increment() и Decrement()
Laravel Eloquent ORM предоставляет удобные методы, называемые increment()и decrement(), которые позволяют легко увеличивать или уменьшать значение определенного столбца на заданную сумму.

// Increment the value by 1
Model::where('id', $uniqueId)->increment('column_name');
// Increment the value by a custom amount
Model::where('id', $uniqueId)->increment('column_name', $amount);
// Decrement the value by 1
Model::where('id', $uniqueId)->decrement('column_name');
// Decrement the value by a custom amount
Model::where('id', $uniqueId)->decrement('column_name', $amount);

Метод 2: атомарные операции с базой данных
Если вас беспокоят условия гонки или вам необходимо обеспечить атомарность операций увеличения или уменьшения, вы можете использовать функции уровня базы данных. Например, вы можете использовать метод DB::raw()в Laravel для выполнения необработанных SQL-запросов.

// Increment the value by 1 using raw SQL
Model::where('id', $uniqueId)->update(['column_name' => DB::raw('column_name + 1')]);
// Increment the value by a custom amount using raw SQL
Model::where('id', $uniqueId)->update(['column_name' => DB::raw("column_name + $amount")]);
// Decrement the value by 1 using raw SQL
Model::where('id', $uniqueId)->update(['column_name' => DB::raw('column_name - 1')]);
// Decrement the value by a custom amount using raw SQL
Model::where('id', $uniqueId)->update(['column_name' => DB::raw("column_name - $amount")]);

Метод 3: использование метода save()
Если вы работаете с экземпляром модели, вы можете увеличить или уменьшить значение непосредственно в объекте, а затем вызвать save()метод сохранения изменений в базе данных.

$model = Model::find($uniqueId);
$model->column_name++; // Increment the value by 1
// $model->column_name += $amount; // Increment the value by a custom amount
$model->save();
$model = Model::find($uniqueId);
$model->column_name--; // Decrement the value by 1
// $model->column_name -= $amount; // Decrement the value by a custom amount
$model->save();

В этой статье мы рассмотрели три различных метода увеличения и уменьшения значений с уникальными идентификаторами в Laravel. Мы обсудили использование методов Eloquent increment()и decrement(), выполнение атомарных операций с базой данных с помощью необработанных SQL-запросов и использование метода save()для экземпляров модели. В зависимости от вашего конкретного варианта использования и требований вы можете выбрать метод, который лучше всего соответствует вашим потребностям.