Возможно, вы должны добавить другую таблицу products
, которая содержит текущую сумму на складе.
Затем вы можете создать связь между products
и purchases
и sales
. Поэтому столбец product_id
в purchases
и sales
указывает на таблицу продуктов. Для получения дополнительной информации см .: https://laravel.com/docs/5.3/eloquent-relationships
Затем, после того, как вам нужно будет добавить новые продажи, вы можете совершить транзакцию, в которой вы проверяете, превышает ли текущая сумма на складе продуктов больше, чем количество проданных продуктов. И если все хорошо, вы обновляете текущую сумму на складе и создаете новую запись для таблицы продаж. Если какая-либо из проверок терпит неудачу, просто откат транзакции, если все это хорошо, зафиксируйте ее. Для получения дополнительной информации о сделках см: https://laravel.com/docs/5.3/database#database-transactions
Это образом amount_in_stock
из products
таблицы всегда будет иметь текущее количество на складе и ваши purchases
и sales
таблицы будет ваш журнал.
Возвращаясь к проверке, в этой установке вам необходимо запросить products
таблицу для текущей суммы в наличии. Вы можете просто извлечь его из db и сравнить его с вашим вводом для продаж (что вы должны делать в любом случае). Не существует правила проверки правильности Laravel, которое может проверить значение таблицы x и сравнить его с столбцом таблицы где-нибудь. Конечно, вы можете создавать свои собственные, но я не понимаю, почему вы должны это делать здесь. В любом случае, уточните: https://laravel.com/docs/5.3/validation#custom-validation-rules для получения дополнительной информации.