在开发过程中我们会遇到需要临时禁用模型监听器的情况,比如有这么一个例子:
使用定义了一个订单模型的观察者:
// OrderObserver.php
namespace App\Observers;
use App\Order;
use App\Services\SMS;
use Illuminate\Http\Request;
/**
* Order observer.
*/
class OrderObserver
{
/**
* After order created.
*
* @param Order $order
*/
public function created(Order $order)
{
(new SMS())->send('order_created', $order->consumer_phone, [$order->no]);
}
}
它监听了一个
created
事件,即在订单创建后给用户发个短信。
在使用 faker 在 db:seed 填充数据的时候,我们是不需要给用户发短信的,这时候我们就希望能临时禁用掉观察者。
在 Laravel 模型里其实已经预留了一个方法:
Model::unsetEventDispatcher();
可以移除事件调度器。我们就可以在 seed 文件里使用它来完成了这个需求了:Order::unsetEventDispatcher();
factory(App\Order::class, 10)->create(); // 创建10条假订单
from : http://laravel.so/tricks/f510d6530c7736f24c9398ac3b647aad
沒有留言:
張貼留言