使用中间件进行 table 操作 laravel 5.1
Using middleware for table manipulation laravel 5.1
目前我正在 laravel 开发中小型应用程序
我在 laravel 遇到了中间件,我的问题是我可以使用中间件来更改我的 table
例如,在我的应用程序(食堂管理系统)中,当用户从菜单中订购某些东西并提出订购请求时,然后在将订单插入模型之前 table 我想从他的余额中减去订单金额。
我考虑这样做的原因是因为余额属性是用户 table 的一部分,订单金额是订单 table 的另一部分,我无法在它们之间建立任何数据关系(但我导出它们之间的多对一关系)。所以我不打算只使用数据关系来做这件事,所以那是我遇到中间件的时候。
所以帮我解决这个问题,我也可以在一个控制器功能中使用两个模型吗?
中间件在处理请求之前或之后执行。这不是您应该执行所描述的业务逻辑的地方。
更适合您需求的工具可能是 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();
}
}
目前我正在 laravel 开发中小型应用程序 我在 laravel 遇到了中间件,我的问题是我可以使用中间件来更改我的 table 例如,在我的应用程序(食堂管理系统)中,当用户从菜单中订购某些东西并提出订购请求时,然后在将订单插入模型之前 table 我想从他的余额中减去订单金额。 我考虑这样做的原因是因为余额属性是用户 table 的一部分,订单金额是订单 table 的另一部分,我无法在它们之间建立任何数据关系(但我导出它们之间的多对一关系)。所以我不打算只使用数据关系来做这件事,所以那是我遇到中间件的时候。 所以帮我解决这个问题,我也可以在一个控制器功能中使用两个模型吗?
中间件在处理请求之前或之后执行。这不是您应该执行所描述的业务逻辑的地方。
更适合您需求的工具可能是 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();
}
}