Мое приложение будет синхронизировать данные из внешней службы, используя их REST api. Я планирую периодически обновлять / создавать данные в моей базе данных из их.
Я вижу много разговоров об использовании моделей в качестве интерфейса для внешнего API. Я вижу, как это будет работать, если вы используете внешний API так же, как базу данных. т.е. получение данных на лету.
В моем случае я планирую запускать запланированные задания.
Могу я спросить совета, как бы вы посоветовали это настроить? На данный момент у меня есть:
Должно ли взаимодействие с API осуществляться через другую модель, контроллер или что-то еще?
Планирование может выполняться с помощью Laravel Планировщик задач:
// add a cron job
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
// add your tasks to the schedule function
protected function schedule(Schedule $schedule)
{
// scheduled a queued job to run every 30 minutes
$schedule->job(new SyncRemoteApiData)->everyThirtyMinutes();
}
Создание моделей, представляющих ответы API, является хорошей идеей, особенно если вы структурируете локальные таблицы базы данных в форме полезных данных ответа.
В противном случае они по-прежнему предоставляют удобное место для сопоставления вашей схемы со своей. Кроме того, вы получаете все преимущества класса модели Eloquent.
Однако я бы сделал большую часть логики в классах Job. Вероятно, в контроллерах не так много (никакой) необходимости, если это автоматизировано, а ваше приложение является инициатором.