首先利用Client套件下載外部url的csv檔案。
本文撰寫使用抓取此網址https://od.cdc.gov.tw/acute/幼兒常規疫苗接種時間試算表.csv
為範例
使用laravel-excel套件將下載的檔案import進資料庫
因為等等會用到先說說laravel ORM的firstOrCreate方法
功能 : 將嘗試使用給定的列/值對定位數據庫記錄。如果在數據庫中找不到模型,則會插入一條記錄,其中包含將第一個數組參數與可選的第二個數組參數合併後的屬性
以下為文檔範例:
再來先創建要傳遞的類
檔案可以放在 app/imports/ExampleImport.php
將 VaccinationImport 對像傳遞給Excel::import()方法,將告訴包如何導入作為第二個參數傳遞的文件,第二個參數的文件就是上面程式碼下載下來的csv檔案放置位置。
該文件應該位於您的默認文件系統磁盤中(參考資料config/filesystems.php)。
在cmd輸入以下指令,創建command檔案,算是一個可以自己寫命令(shell)的檔案
接著在DownloadCSV.php中修改
修改完成接下來到app/Console/Kernel.php
修改及導入命令程式碼
程式碼部分就算完成了,接下來就是要設定排程工作
我是在Linux上面做開發,如要要讓它排程就要加入 CronJob
在Linux上輸入
crontab -e
按i編輯,輸入以下這行,它是告訴這個package每一分鐘run一次php artisan schedule:run
就是跑排程的意思。
path-to-your-project
改成你的專案路徑
輸入完畢按下esc,然後輸入:wq離開並儲存,跑出以下這行表示成功拉
crontab: installing new crontab
更多相關排程時間參考這裡
更多排程相關資料請參照laravel Task Scheduling 文檔