問題描述
使用中間件進行表操作 laravel 5.1 (Using middleware for table manipulation laravel 5.1)
目前我正在 laravel 中開發一個中小型應用程序我在 laravel 中遇到中間件,我的問題是我可以使用中間件在我的表中進行更改,例如,在我的應用程序(食堂管理系統)中,當用戶訂購時從菜單中取出一些東西並提出訂單請求,然後在將訂單插入模型表之前,我想從他的餘額中減去訂單金額。我正在考慮這樣做的原因是因為餘額屬性是用戶表的一部分,訂單金額是訂單表的另一部分,我無法在它們之間開發任何數據關係(但我推導出它們之間的多對一關係) . 所以我不打算只使用數據關係做這件事,所以那是我遇到中間件的時候。所以幫我解決這個問題,我也可以在一個控制器功能中使用兩個模型嗎?
參考解法
方法 1:
Middleware is executed before or after a request is processed. It's not a place where you should execute business logic you're describing.
A tool that better suits your needs could be Eloquent's model observers ‑ you can read more about them here: http://laravel.com/docs/5.0/eloquent#model‑observers
In your case, you could register a OrderObserver that would reduce user's balance after an order is placed. A basic example:
class OrderObserver {
public function created($order) {
$user = $order‑>user;
$user‑>balance = $user‑>balance ‑ $order‑>quantity;
$user‑>save();
}
}
(by robinhood、jedrzej.kurylo)