У меня есть таблица «переходов» для отслеживания перевода суммы от пользователя A к пользователю B.
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(10) | NO | PRI | NULL | |
| sender | int(10) | NO | | NULL | |
| amount | int(10) | NO | | NULL | |
| receiver | int(10) | NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
Перед каждой новой вставкой в эту таблицу мне нужно проверять, достаточно ли у отправителя достаточного баланса.
Вот таблица "users"
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(10) | NO | PRI | NULL | |
| name | varchar(100)| NO | | NULL | |
| balance | int(10) | NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
Как реализовать здесь блокировку, чтобы пользовательский баланс не уменьшался другими методами после прохождения проверки баланса.
public function store(Transfer $transfer, TransferRequest $request)
{
$transfer->isAllowed($request); // Will abort if users balance is low
//what if the users balance gets reduced by some other request here !!
$transfer->fill($request->all())->save();
return redirect()->route('transfers.index')->withStatus(__('Transfer successfully created.'));
}