WEEK5 – DAY3 – 專題後端啟動!

今天整天都是 Lab 課,一直到下週三小專題之前,這段時間都可以用來實作。之前我的前端部分已經完成了靜態的部分,但一些延伸的功能,像是頁面跳轉、會員登錄等基礎功能還沒做。我的想法是串接後端和資料庫,嘗試將資料庫的資料傳到前端。這個過程我知道會遇到很多問題,所以思考了很久。

不過,因為網路不穩和偶爾的「躺平」狀況,實作時間變得很有限。上課依然是看 Laravel 的相關影片,但因為我沒有學過相關語法,也缺乏資料庫基礎,看影片時只能大概理解它想要做什麼,但在語法部分真的無能為力。所以我決定與其繼續看影片,不如直接開始實作。早上我成功架設了後端的開發環境,確認一切運作正常。

在實作的過程中,我開始思考需要做的步驟,包括資料庫設定、路由、API 調用等。雖然大致上算順利,但也遇到一些很嚴重的問題。例如,一開始需要刪除資料庫來排查問題,我必須理解是哪個部分出錯,然後重做一遍。幸好最後還是救回來了。

接著是版本衝突的問題。套件之間可能會有衝突,有些功能可能因為優化而被移除或省略。新功能或新語法也讓之前看的影片內容對不上,導致我後來發現 ChatGPT 無法解決核心問題,只能提供可能的方向。最後,我決定上 StackOverflow 查找類似問題,發現真的是版本問題。ChatGPT 的知識截至 2023 年 10 月左右,無法應付 2024 年的 Laravel 語法和使用方式,因此一直鬼打牆。

不只是 4 O模型,連最新的 O1 模型也有類似問題。兩者的回答都無法真正解決問題,最後還是靠我自己思考,才找出可能的解法。我發現這些 AI 模型的回答,有時候會讓人更困惑,沒有解決根源問題。

儘管大部分後端的東西還是不太懂,但至少完成了我想要實作的部分功能。接下來,我要測試後端能否與前端連接,如果能將資料庫的資料傳到前端,那麼後續的功能實作應該就沒那麼困難了。我對這個小專題的信心也增加了,因為這次挑戰了我之前害怕且完全沒接觸過的事情。

今天能完成這些,我已經很滿意了。本來預期會遇到更多奇怪的問題,甚至可能需要降版本或處理衝突。幸好 PHP 相對簡單,過程還算順利。不過,我仍然擔心前後端通訊和 token 驗證的部分,明天才能確認實作的狀況如何。

今天實作的內容精簡整理

  1. Laravel 環境設定
    • 安裝 Laravel,建立新專案。
    • 初始化 Git 版本控制並推送到 GitHub。
  2. 資料庫設定與連接
    • 安裝 MySQL,設定 .env 檔案以連接資料庫。
    • 使用 php artisan migrate 建立 books 資料表。
  3. 建立模型與遷移
    • 使用 php artisan make:model Book -m 建立 Book 模型和遷移檔。
    • 確認 Book 模型的 fillable 欄位。
  4. Seeder 資料填充
    • 建立 BooksTableSeeder,插入 3 本書的初始資料。
    • 執行 php artisan db:seed 填充資料。
  5. CRUD 測試
    • 使用 Tinker 測試 Book 模型的 CRUD 功能。
    • 刪除和重新插入資料以確認功能正常運作。
  6. 路由與 API 測試
    • 設定 web.phpapi.php 路由。
    • 嘗試透過 Postman 測試 API。
    • 解決 API 404 問題與 CSRF 保護的疑惑。

遇到的問題與解決方法

  1. 遷移檔重複
    • 問題:執行 php artisan make:model Book -m 時,產生了重複的 _create_books_table 遷移檔。
    • 解決:刪除重複的遷移檔,保留原有設計好的檔案。
  2. 模型未找到
    • 問題:在 Tinker 中執行 Book::create() 時出現「Class not found」。
    • 解決:確認 app/Models/Book.php 是否存在並正確命名。
  3. CRUD 測試與資料刪除
    • 問題:不小心使用 php artisan migrate:refresh,還有php artisan db:wipe導致資料表被清空。
    • 解決:重新執行 Seeder 填回資料。
  4. API 404 問題
    • 問題:api.php 路由無法正常運作,出現 404 錯誤。
    • 解決:確認 API 路由設定並正確啟用 Laravel 內建的 API 功能。
  5. 版本問題與資訊落後
    • 問題:提供的解決方案基於過時的 Laravel 版本,與 2024 最新版不符。
    • 找最新的stackflow

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *