123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- <?php
- namespace App\Search\Listeners;
- use App\Search\Events\SearchUpdateEvent;
- use Illuminate\Contracts\Queue\ShouldQueue;
- use Illuminate\Support\Facades\Log;
- /**
- * 模型更新事件
- * Class SearchUpdateListener
- * @package App\Search\Listeners
- * Auth Zhong
- * Date 2019/1/22
- */
- class SearchUpdateListener implements ShouldQueue
- {
- /**
- * 处理事件.
- *
- * @param SearchUpdateEvent $event
- * @return void
- */
- public function handle(SearchUpdateEvent $event)
- {
- $model=app($event->changeModel);
- if ($event->type == SearchUpdateEvent::OPERATE_UPDATE) {
- $model->where(function ($query) use ($event) {
- if (!is_array($event->where)) {
- $query->whereIn('id', explode(',', $event->where));
- } else {
- foreach ($event->where as $value) {
- $method = array_shift($value);
- $query->{$method}(...array_values($value));
- }
- }
- })->searchable();
- } elseif ($event->type == SearchUpdateEvent::OPERATE_DELETE) {
- $model->withTrashed()->where(function ($query) use ($event) {
- if (!is_array($event->where)) {
- $query->whereIn('id', explode(',', $event->where));
- } else {
- foreach ($event->where as $value) {
- $method = array_shift($value);
- $query->{$method}(...array_values($value));
- }
- }
- })->unsearchable();
- }
- }
- }
|