0

目前我正在 laravel 中开发一个中小型应用程序我在 laravel 中遇到中间件,我的问题是我可以使用中间件在我的表中进行更改,例如,在我的应用程序(食堂管理系统)中,当用户从菜单并提出订单请求,然后在将订单插入模型表之前,我想从他的余额中减去订单金额。我正在考虑这样做的原因是因为余额属性是用户表的一部分,订单金额是订单表的另一部分,我无法在它们之间开发任何数据关系(但我推导出它们之间的多对一关系) . 所以我不打算只使用数据关系做这件事,所以那是我遇到中间件的时候。所以帮我解决这个问题,我也可以在一个控制器功能中使用两个模型吗?

4

1 回答 1

1

中间件在处理请求之前或之后执行。这不是您应该执行您所描述的业务逻辑的地方。

更适合您需求的工具可能是 Eloquent 的模型观察者 - 您可以在此处阅读有关它们的更多信息:http: //laravel.com/docs/5.0/eloquent#model-observers

在您的情况下,您可以注册一个 OrderObserver,它会在下订单后减少用户的余额。一个基本的例子:

class OrderObserver {
  public function created($order) {
    $user = $order->user;
    $user->balance = $user->balance - $order->quantity;
    $user->save();
  }
}
于 2015-11-29T14:04:09.303 回答