❶ 使用 Docker 建立方式(基本流程)
-
安裝 Docker:在本機安裝 Docker 與 Docker Compose。
-
建立專案目錄:例如
my-app/。 -
撰寫 Dockerfile:描述應用的環境(PHP、Composer 等)。
-
建立 docker-compose.yml:
- 定義服務(如 PHP、Nginx、MySQL)。
-
建置與啟動容器:
docker-compose up -d --build -
進入容器操作:
docker exec -it <container_name> bash
❷ 如何 Docker 建立 Laravel 應用(簡易流程)
-
建立 Laravel 專案(可先用 Composer 或直接用 Laravel 官方 Docker image)。
-
建立
docker-compose.yml:services: app: build: context: . dockerfile: Dockerfile volumes: - .:/var/www ports: - "8000:80" depends_on: - mysql mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: secret MYSQL_DATABASE: laravel -
建立
Dockerfile:FROM php:8.1-fpm RUN docker-php-ext-install pdo pdo_mysql WORKDIR /var/www -
啟動服務並安裝 Laravel:
docker-compose up -d docker exec -it <app_container> composer create-project laravel/laravel .
❸ 什麼是 RESTful API?
- RESTful API 是一種風格,用於設計 HTTP 介面,讓前後端透過 API 溝通。
- 常用動詞對應資源操作:
GET /posts:取得所有貼文POST /posts:新增貼文GET /posts/1:取得貼文1PUT /posts/1:更新貼文1DELETE /posts/1:刪除貼文1
❹ RESTful API 如何在 Laravel 應用?
-
建立 Route:
Route::apiResource('posts', PostController::class); -
建立 Controller:
php artisan make:controller PostController --api -
撰寫邏輯:在
PostController中實作 index, store, show, update, destroy 等方法。 -
回傳 JSON:
return response()->json($data);
❺ Laravel insert 與 create 差異與情境?
| 方法 | insert | create |
|---|---|---|
| 類型 | Query Builder 方法 | Eloquent ORM 方法 |
| 傳回值 | 無傳回值 | 回傳模型物件 |
| 資料驗證 | 不會驗證填充 (fillable) | 會驗證 $fillable 或 $guarded |
| 使用時機 | 批量插入、大量資料效能優先 | 常規單筆新增、有模型邏輯需求時 |
// insert
DB::table('users')->insert(['name' => 'Tom', 'email' => '[email protected]']);
// create
User::create(['name' => 'Tom', 'email' => '[email protected]']);
❻ Laravel ORM join 與 with 差異與情境?
| 方法 | join | with (Eager Loading) |
|---|---|---|
| 類型 | SQL 層級的 join 查詢 | ORM 層級的關聯載入 |
| 效能 | 效能高(單次查詢) | 較方便、有模型資料結構 |
| 用途 | 沒有定義關聯,需手動 join | 已定義 Eloquent 關聯關係時使用 |
// join 範例
User::join('posts', 'users.id', '=', 'posts.user_id')->get();
// with 範例
User::with('posts')->get();
❼ Laravel Unit Test 如何避免測試時寫入資料庫?
-
使用 Database Transaction:
use Illuminate\Foundation\Testing\RefreshDatabase; class ExampleTest extends TestCase { use RefreshDatabase; // 每個 test 執行後會 rollback } -
使用 Mock 或 Fake 模型或 Repository:
- 模擬資料邏輯,不實際寫入。
- 可以搭配 Laravel 的
Mockery或 PHPUnit mock 工具。
❽ Laravel Queue 建立方式(簡易流程)
-
設定 .env(使用 database 或 redis 等):
QUEUE_CONNECTION=database -
建立 Queue Table(如使用 database):
php artisan queue:table php artisan migrate -
建立 Job 類別:
php artisan make:job SendEmailJob -
派送 Job:
dispatch(new SendEmailJob($data)); -
執行 Queue Worker:
php artisan queue:work