В настоящее время я разрабатываю приложение малого и среднего уровня в laravel Я столкнулся с промежуточным программным обеспечением в laravel, Мое вопрос: могу ли я использовать промежуточное программное обеспечение для внесения изменений в таблицу , например, в моем приложении (Canteen Management System). Когда пользователь заказывает что-то из меню и делает запрос на заказ, перед тем, как вставить заказ в таблицу моделей, я хочу вычесть сумму заказа из его баланса. Причина, по которой я думаю об этом, заключается в том, что атрибут баланса является частью таблицы пользователя, а сумма заказа - это еще одна часть таблицы Order, и я не могу развить какое-либо отношение данных между ними (но я получаю много к одному отношению между ними). Поэтому я не думаю о том, чтобы делать только эту вещь, используя отношения данных. Так вот, когда я нахожусь на основе промежуточного программного обеспечения. Так помогите мне об этом, также Могу ли я использовать две модели в одной функции контроллера?Использование промежуточного программного обеспечения для обработки таблиц laravel 5.1
0
A
ответ
1
Middleware выполняется до или после обработки запроса. Это не место, где вы должны выполнять бизнес-логику, которую вы описываете.
инструмента, который лучше подходит для ваших потребностей могут быть примерными наблюдателями красноречив - вы сможете прочитать о них здесь: 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();
}
}
именно то, что хотел упомянуть –
Thnx @jedrzej это будет делать это для меня, также если помимо этого подхода, можно ли использовать две модели в одной функции контроллера – robinhood
Единственный ответ, который я могу дать есть: это зависит. Конечно, это технически возможно, но все зависит от вашего дизайна и того, чего вы хотите достичь. –