iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0
Software Development

持續進化論系列 第 8

DAY08 - 創造的工具

  • 分享至 

  • xImage
  •  

昨天已經將各個實體之間的關聯都設定好了,接下來要做的事情就是要驗證功能有沒有寫錯,此時可以先用資料庫工具手動建立幾筆資料來當測試使用。

https://ithelp.ithome.com.tw/upload/images/20220908/20115048V3hF6A06HL.png
https://ithelp.ithome.com.tw/upload/images/20220908/201150482RDw2WS8gL.png
https://ithelp.ithome.com.tw/upload/images/20220908/20115048CXzQGOu8O8.png

此時可以發現到因為昨天有設外鍵的緣故,如果沒有其對應的資料是不能新增的,例如 Post 只有 id 為 2 的評論,所以在 Comment 的 post_id 只能是 2 ,如果手動填入 1 會提示沒有這筆關聯所以無法寫入,如此一來就可以保護系統不會出現孤兒資料的狀況發生。

資料建立好了之後就要開始測試關聯了,但總不可能為了要測試關聯而將整隻 API 都寫好,例如 Route、Controller、Service 等等,這時候就可以善用 Laravel 內建的工具 Tinker,先進入到 PHP 的 Docker 容器裡面,然後下指令。

docker exec -it php bash
php artisan tinker
https://ithelp.ithome.com.tw/upload/images/20220908/20115048MVtFGU6vCo.png

此時就可以直接跟資料庫溝通了,先來尋找第一位使用者
App\Models\User::first()

尋找 id 為 2 的使用者
App\Models\User::find(2)

此時可以利用寫好的關聯將使用者寫過的評論搜尋出來,並利用 toArray() 這個 Method 使資料便於觀察
App\Models\User::first()->posts->toArray()

也可以使用 with 將使用者與評論同時搜尋出來
App\Models\User::with(‘posts’)->first()->toArray()

更厲害的是可以同時將使用者、評論、留言同時全部搜尋
App\Models\User::with('posts')->with('posts.comments')->first()->toArray()

今天介紹完 Tinker 的基本使用,明天再來介紹其他 Model 的屬性。


上一篇
DAY07 - 站在巨人的肩膀
下一篇
DAY09 - 輔助參數
系列文
持續進化論30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言