今天整天都是 Lab 課,一直到下週三小專題之前,這段時間都可以用來實作。之前我的前端部分已經完成了靜態的部分,但一些延伸的功能,像是頁面跳轉、會員登錄等基礎功能還沒做。我的想法是串接後端和資料庫,嘗試將資料庫的資料傳到前端。這個過程我知道會遇到很多問題,所以思考了很久。
不過,因為網路不穩和偶爾的「躺平」狀況,實作時間變得很有限。上課依然是看 Laravel 的相關影片,但因為我沒有學過相關語法,也缺乏資料庫基礎,看影片時只能大概理解它想要做什麼,但在語法部分真的無能為力。所以我決定與其繼續看影片,不如直接開始實作。早上我成功架設了後端的開發環境,確認一切運作正常。
在實作的過程中,我開始思考需要做的步驟,包括資料庫設定、路由、API 調用等。雖然大致上算順利,但也遇到一些很嚴重的問題。例如,一開始需要刪除資料庫來排查問題,我必須理解是哪個部分出錯,然後重做一遍。幸好最後還是救回來了。
接著是版本衝突的問題。套件之間可能會有衝突,有些功能可能因為優化而被移除或省略。新功能或新語法也讓之前看的影片內容對不上,導致我後來發現 ChatGPT 無法解決核心問題,只能提供可能的方向。最後,我決定上 StackOverflow 查找類似問題,發現真的是版本問題。ChatGPT 的知識截至 2023 年 10 月左右,無法應付 2024 年的 Laravel 語法和使用方式,因此一直鬼打牆。
不只是 4 O模型,連最新的 O1 模型也有類似問題。兩者的回答都無法真正解決問題,最後還是靠我自己思考,才找出可能的解法。我發現這些 AI 模型的回答,有時候會讓人更困惑,沒有解決根源問題。
儘管大部分後端的東西還是不太懂,但至少完成了我想要實作的部分功能。接下來,我要測試後端能否與前端連接,如果能將資料庫的資料傳到前端,那麼後續的功能實作應該就沒那麼困難了。我對這個小專題的信心也增加了,因為這次挑戰了我之前害怕且完全沒接觸過的事情。
今天能完成這些,我已經很滿意了。本來預期會遇到更多奇怪的問題,甚至可能需要降版本或處理衝突。幸好 PHP 相對簡單,過程還算順利。不過,我仍然擔心前後端通訊和 token 驗證的部分,明天才能確認實作的狀況如何。
今天實作的內容精簡整理
- Laravel 環境設定
- 安裝 Laravel,建立新專案。
- 初始化 Git 版本控制並推送到 GitHub。
- 資料庫設定與連接
- 安裝 MySQL,設定
.env
檔案以連接資料庫。 - 使用
php artisan migrate
建立books
資料表。
- 安裝 MySQL,設定
- 建立模型與遷移
- 使用
php artisan make:model Book -m
建立Book
模型和遷移檔。 - 確認
Book
模型的fillable
欄位。
- 使用
- Seeder 資料填充
- 建立
BooksTableSeeder
,插入 3 本書的初始資料。 - 執行
php artisan db:seed
填充資料。
- 建立
- CRUD 測試
- 使用 Tinker 測試
Book
模型的 CRUD 功能。 - 刪除和重新插入資料以確認功能正常運作。
- 使用 Tinker 測試
- 路由與 API 測試
- 設定
web.php
與api.php
路由。 - 嘗試透過 Postman 測試 API。
- 解決 API 404 問題與 CSRF 保護的疑惑。
- 設定
遇到的問題與解決方法
- 遷移檔重複
- 問題:執行
php artisan make:model Book -m
時,產生了重複的_create_books_table
遷移檔。 - 解決:刪除重複的遷移檔,保留原有設計好的檔案。
- 問題:執行
- 模型未找到
- 問題:在 Tinker 中執行
Book::create()
時出現「Class not found」。 - 解決:確認
app/Models/Book.php
是否存在並正確命名。
- 問題:在 Tinker 中執行
- CRUD 測試與資料刪除
- 問題:不小心使用
php artisan migrate:refresh
,還有php artisan db:wipe
導致資料表被清空。 - 解決:重新執行 Seeder 填回資料。
- 問題:不小心使用
- API 404 問題
- 問題:
api.php
路由無法正常運作,出現 404 錯誤。 - 解決:確認 API 路由設定並正確啟用 Laravel 內建的 API 功能。
- 問題:
- 版本問題與資訊落後
- 問題:提供的解決方案基於過時的 Laravel 版本,與 2024 最新版不符。
- 找最新的stackflow