2015-11-29 21 views
0

目前我正在開發一個小到中等水平應用laravel 我laravel跨中間件來了,我的問題是,我可以使用中間件在我的表 更改爲例如,在我的應用程序(食堂管理系統),當用戶從菜單中訂購一些東西並提出訂單請求時,在將訂單插入到模型表之前,我想從他的餘額中減去訂單數量。 我正在考慮這樣做的原因是因爲餘額屬性是用戶表的一部分,而訂單金額是訂單表的另一部分,我無法在它們之間建立任何數據關係(但是我推導出它們之間的多對一關係)。所以我沒有考慮只使用數據關係來做這件事情,所以這就是我關注中間件的時候。 所以幫我解釋一下,我也可以在一個控制器功能中使用兩個模型嗎?爲表操作使用中間件laravel 5.1

回答

1

中間件在處理請求之前或之後執行。這不是一個你應該執行你描述的業務邏輯的地方。

一種工具,更適合您的需求可能是雄辯的模型觀察員 - 你可以閱讀更多關於他們在這裏: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(); 
    } 
} 
+0

究竟是什麼想提 –

+0

日Thnx @jedrzej這將做到這一點對我來說, 此外,如果除了這種方法,我可以使用兩種模式在一個控制器功能 – robinhood

+0

唯一的答案我可以給是:這取決於。當然,這在技術上是可行的,但這一切都取決於你的設計和你想達到的目標。 –