Database Laravel DB事务和事件

Database Laravel DB事务和事件,database,laravel,eloquent,Database,Laravel,Eloquent,我希望,如果任何产品更新,我们会在事务完成后触发一次事件 DB::transactionfunction{ foreach$产品作为$产品{ $product=product::查找$product->id; $product->price=2; $product->update; } }; 我刚刚检查了Laravel的源代码。我认为您可以利用现成提供的Lightning\Database\Events\TransactionCommitted事件。您只需向EventServiceProvid

我希望,如果任何产品更新,我们会在事务完成后触发一次事件

DB::transactionfunction{ foreach$产品作为$产品{ $product=product::查找$product->id; $product->price=2; $product->update; } };
我刚刚检查了Laravel的源代码。我认为您可以利用现成提供的Lightning\Database\Events\TransactionCommitted事件。您只需向EventServiceProvider中的侦听器注册此事件:

名称空间应用程序\提供者; 类EventServiceProvider扩展了ServiceProvider { 受保护的$listen=[ TransactionCommitted::class=>[ WhatYouWantToDo::类, ], ]; }
您可以在更新产品之前使用isDirty方法检查产品是否有属性更改。您可以在$product->update行下触发事件。有什么大不了的?@AbdullahShakir您提到的方法的唯一好处是,事件将在事务提交之前触发,在某些情况下,这可能会导致有趣的场景:如果事务因某些错误而失败,或者事件将针对尚未保存在数据库中的对象进行处理,该怎么办@PridemumBami是否希望在提交事务后触发事件?