前提
- 下載代碼,確保API運行環(huán)境搭建成功,可以參考Windows 10 配置 Laravel 運行環(huán)境。
- 相應(yīng)Table的設(shè)計已經(jīng)完成。
- 相應(yīng)的數(shù)據(jù)庫已經(jīng)創(chuàng)建。
編寫數(shù)據(jù)庫遷移(migration)
-
首先根據(jù)設(shè)計好的Table在database/migration文件下創(chuàng)建相應(yīng)的php文件,此文件主要用于創(chuàng)建相應(yīng)Table??梢杂妹羁旖輨?chuàng)建:
php artisan make:migration table_nameCreate table -
創(chuàng)建后就可以填寫Table中相應(yīng)的數(shù)據(jù)了,此php文件中有up()和down()兩個fuction,up()對應(yīng)創(chuàng)建Table,down()對應(yīng)刪除。具體的填寫可以參考xianyu和miaomiao的代碼,都很簡單,這里貼下自己的:
updown -
接下來就可以運行命令
php artisan migrate來創(chuàng)建Table了,運行此命令后去查看相應(yīng)的數(shù)據(jù)庫,可以發(fā)現(xiàn)Table已成功創(chuàng)建Table 關(guān)于數(shù)據(jù)庫遷移的詳細內(nèi)容,可以參考數(shù)據(jù)庫遷移
填充數(shù)據(jù)庫
-
Table建立好了,可是里面沒有數(shù)據(jù),這時候就需要去填充數(shù)據(jù)庫了。首先,去Entity文件夾下建立每個Table對應(yīng)的Eloquent模型,其中用到了一個belongsTo()方法,是用來建立不同table之間的聯(lián)系的,關(guān)于這一塊,可以參考Eloquent:關(guān)聯(lián)。
JobModelPath.pngJobModel.png -
我們填充數(shù)據(jù)使用的是工廠函數(shù),顧名思義,工廠函數(shù)就是像工廠一樣批量產(chǎn)生數(shù)據(jù)的一個函數(shù),不用我們手動一個一個去創(chuàng)建數(shù)據(jù),能節(jié)省很多時間。其代碼在database/factories/ModelFactory.php中,關(guān)于工廠函數(shù)更詳細的介紹可參考模型工廠,下面是我使用到的工廠函數(shù):
factory.png -
工廠函數(shù)編寫完畢后,需要在database/seeds/DatabaseSeeder.php的run()中對其進行調(diào)用。
Paste_Image.png 以上步驟執(zhí)行完后,就可以執(zhí)行命令
php artisan db:seed來生成數(shù)據(jù)到數(shù)據(jù)庫中了。
編寫路由
路由在app/Http/routes.php中,注意這里我把路由語句放到了$api->group()中的函數(shù)里面,這是因為需要用到JWT驗證,簡單地說就是需要登錄獲得一個token。關(guān)于JWT用法,可以參考JWT wiki。

編寫控制器
-
上一步中調(diào)用了JobController控制器,接下來我們就需要編寫這個控制器,路徑位于Http\V1_0\Controllers中,其中的區(qū)塊1就是剛才提到的JWT驗證,而區(qū)塊2主要是針對路由中是否含有tech_level_id做的一個判斷處理
JobController.png -
控制器中調(diào)用了getJob()和getJobByTechLevelID()兩個方法,這兩個方法我們需要在Repositorise中編寫,主要是一些操作數(shù)據(jù)庫的動作,關(guān)于數(shù)據(jù)庫的一些查詢操作,可以參考數(shù)據(jù)庫:查詢構(gòu)造器
Repositories.pngRepositories2.pngRepositories3.png -
repository和interface編寫完后還要去Providers\AppServiceProvider.php里面綁定下
bind.png -
從數(shù)據(jù)庫中取得數(shù)據(jù)后可以直接返回數(shù)據(jù)$jobs,但是為了數(shù)據(jù)顯示得更友好,我們需要對數(shù)據(jù)進行一些轉(zhuǎn)換,這里就用到了轉(zhuǎn)化器Transformer,代碼路徑在Http\V1_0\Transformers\JobTransformer.php中,更詳細的信息可以參考轉(zhuǎn)化器
transformer.png
測試
-
先使用/login/wechat路由來獲取一個token。
token1.pngtoken2.png -
把這個token作為參數(shù)傳遞給我們的Jobs路由
token3.png -
成功返回數(shù)據(jù)。
success.png

















