Probablement vous devriez ajouter une autre table products
qui détient le montant actuel en stock. Puis vous pouvez créer une relation Eloquent entre products
et purchases
et sales
. Ainsi, la colonne product_id
dans purchases
et sales
pointe vers la table des produits. Pour plus d'informations, voir: https://laravel.com/docs/5.3/eloquent-relationships
Ensuite, une fois que vous avez besoin d'ajouter une nouvelle vente, vous pouvez faire une transaction dans laquelle vous vérifiez si le montant actuel en stock pour les produits est plus élevé que la quantité de produits vendus. Et si tout va bien, vous mettez à jour le montant actuel en stock et créez la nouvelle entrée pour la table des ventes. Si l'une des vérifications échoue, annulez simplement la transaction, si tout est bon, validez-la. Pour plus d'informations sur les transactions voir: https://laravel.com/docs/5.3/database#database-transactions
De cette façon, la amount_in_stock
de la table products
aura toujours le montant actuel en stock et vos tables purchases
et sales
sera votre journal.
Pour en revenir à la validation, dans cette configuration, vous aurez besoin d'interroger la table products
pour le montant actuel en stock. Vous pouvez simplement le récupérer à partir de DB et le comparer avec votre entrée pour les ventes (que vous devriez faire de toute façon). Il n'y a pas de règle de validation Laravel prête à l'emploi qui peut vérifier la valeur de la table x et la comparer avec une colonne de table quelque part. Bien sûr, vous pouvez créer le vôtre, mais je ne vois pas vraiment pourquoi vous devriez le faire ici. En tout cas, consultez: https://laravel.com/docs/5.3/validation#custom-validation-rules pour plus d'informations à ce sujet.