2015-11-19 3 views
1

У меня есть сценарий. Мы интегрировали стороннее приложение с нашим приложением laravel. В начале мы имеем сценарий, когда всякий раз, когда клиент или проект создается, обновляется и удаляется, нам необходимо отправить соответствующие данные стороннему приложению. Например, если клиент создан в моем веб-приложении, нам также нужно создать стороннее приложение, и это также относится к обновлению и удалению. Таким образом, я захватил красноречивые события Laravel в поставщике услуг приложений, таких какLaravel Control Eloquent Events

Client::created(function($client) use($integration) { 
     $integration->sendDataToIntegratedApps('client.create', $client); 
}); 

Client::updated(function($client) use($integration) { 
     $integration->sendDataToIntegratedApps('client.update', $client); 
}); 

Client::deleting(function($client) use($integration) { 
     $integration->sendDataToIntegratedApps('client.delete', $client); 

}); 

Он отлично работает. Но теперь у нас есть другое требование: всякий раз, когда клиент создается/обновляется/удаляется в стороннем приложении, нам также нужно создавать/обновлять/удалять в нашем веб-приложении.

Третья сторона отправляет данные через webhook, мы получаем данные, и когда мы пытаемся создать/обновить/удалить операции в веб-приложении, вышеуказанные события также активируются, а данные снова отправляются стороннему приложению. Например, клиент создается сторонним приложением, он отправляет данные созданного клиента в наше веб-приложение. Мы создаем клиент в нашем веб-приложении. Но когда клиент создан, происходит событие Client::created, и данные снова отправляются стороннему приложению, что неверно.

Так что теперь я хочу,

Если данные, созданные на нашем веб-приложения, события должны быть уволены. Но если мы сначала получаем данные из стороннего приложения, а затем создаем/обновляем/удаляем указанные выше события, не следует запускать их. Есть ли способ контролировать такие события или есть ли другой способ выполнить эту задачу?

ответ

1

Если вы используете Eloquent ORM для CRUD, от стороннего запроса APP, он должен снова запустить событие модели.

либо вы должны использовать Query Builder для этого CRUD (запрос от третьего лица), то он не должен запускать событие модели. или вы должны установить какой-то флаг для идентификации запроса, поступающего от третьего лица, и должны пропускать запуск события модели.

Надеюсь, он имеет смысл.

+0

Вы уверены, что построитель запросов не будет запускать эти события? –

+0

Да, это не сгорит. –

+0

В таком случае позвольте мне попробовать. –