目前我正在开发laravel中的小型到中级应用程序 我在laravel中遇到过中间件,我的问题是我可以使用中间件在我的表中进行更改 例如,在我的应用程序(食堂管理系统)中,当用户从菜单中订购某些东西并请求订购时,然后在将订单插入模型表之前,我想从他的余额中减去订单金额。 我想这样做的原因是因为balance属性是用户表的一部分,而order order是Order表的另一部分,我无法在它们之间开发任何数据关系(但我在它们之间得出多对一的关系) 。所以我不想用数据关系来做这件事,所以当我来到中间件时就是这样。 所以帮助我这个,也可以在一个控制器功能中使用两个模型吗?
答案 0 :(得分: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();
}
}