laravel

时间:2017-01-05 18:51:12

标签: mysql database laravel controllers

我想使用laravel创建基本库存系统。我有2张桌子。一个用于购买,另一个用于销售。 购买表中的字段:id,product_id,quantity_bought,date_bought。

销售表中的字段:id,product_id,quantity_sold,date_sold

我如何执行验证,以使quantity_sold不能大于quantity_bought?另外,我如何获得quantity_remaining并将其保存在数据库中。

3 个答案:

答案 0 :(得分:1)

可能你应该添加另一张表products来保存库存中的当前金额。

然后,您可以在productspurchases以及sales之间创建一个雄辩的关系。因此product_idpurchases中的sales列指向产品表。有关详细信息,请参阅:https://laravel.com/docs/5.3/eloquent-relationships

然后,一旦您需要添加新的销售,您就可以进行交易,检查产品的当前库存量是否高于销售的产品数量。如果一切顺利,您将更新库存中的当前金额并为销售表创建新条目。如果任何检查失败,只需回滚事务,如果一切正常,则提交它。有关交易的更多信息,请参阅:https://laravel.com/docs/5.3/database#database-transactions

这样,amount_in_stock表的products将始终具有库存中的当前金额,并且您的purchasessales表将成为您的日志。

返回验证,在此设置中,您需要查询products表中的当前库存量。您可以从数据库中获取它并将其与您的销售输入进行比较(无论如何您应该这样做)。没有开箱即用的Laravel验证规则可以检查表x的值并将其与某个表列进行比较。当然你可以创建自己的,但我真的不明白为什么你应该这样做。在任何情况下,请查看:https://laravel.com/docs/5.3/validation#custom-validation-rules了解更多信息。

答案 1 :(得分:0)

您可以通过在“购买”模型中定义totalBoughts($product_id)并在“销售”表格中totalSolds($product_id)来获取此功能,并通过提供产品ID调用您的控制器

  

但这不是一种有效的方法

或者您可以使用库存表创建这两者之间的关系,您可以在其中存储产品的当前状态

  

当购买库存增加并出售时,它会减少产品数量,因此您无法手动检查整个表格的可用性   如果库存中的任何产品设置为0,则无法销售

答案 2 :(得分:0)

Laravel有一个很好的库存库。支持4和5 https://github.com/stevebauman/inventory

根据该库的表如下

+---------------------------------+
|Table Names                      |
+---------------------------------+
| categories                      |
| inventories                     |
| inventory_skus                  |
| inventory_stock_movements       |
| inventory_stocks                |
| inventory_suppliers             |
| inventory_transaction_histories |
| inventory_transactions          |
| locations                       |
| metrics                         |
| migrations                      |
| password_resets                 |
| suppliers                       |
| users                           |
+---------------------------------+