Laravel 以優雅語法與完整生態聞名。本文記錄從環境準備到建立第一個後台模組的完整步驟,適合 PHP 框架初學者快速上手。
composer create-project laravel/laravel myapp
cd myapp
php artisan serve # 開發伺服器 https://127.0.0.1:8000
編輯 .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myapp
DB_USERNAME=root
DB_PASSWORD=secret
執行遷移測試連線:
php artisan migrate
routes/web.php:
Route::group([
'middleware' => ['web', 'admin.login'],
'prefix' => 'admin',
'namespace' => 'Admin'
], function () {
Route::get('index', 'IndexController@index');
// 資源路由一鍵生成 CRUD
Route::resource('category', 'CategoryController');
});
⚠️ Laravel 8+ 預設關閉 namespace 自動前綴,需在 RouteServiceProvider 中設定 $namespace = 'App\\Http\\Controllers' 或使用完整類名。
php artisan make:controller Admin/IndexController
php artisan make:controller Admin/CategoryController --resource
app/Http/Controllers/Admin/IndexController.php:
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
class IndexController extends Controller {
public function index() {
return view('admin.index'); // resources/views/admin/index.blade.php
}
}
php artisan make:model Category -m // 同時建立遷移檔
database/migrations/xxxx_create_categories_table.php:
Schema::create('categories', function (Blueprint $table) {
$table->id('cate_id'); // 主鍵欄位名自訂
$table->string('name', 100);
$table->text('description')->nullable();
$table->timestamps(); // created_at、updated_at
});
app/Models/Category.php:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Category extends Model {
protected $table = 'categories';
protected $primaryKey = 'cate_id';
public $timestamps = true; // 對應 timestamps()
protected $guarded = []; // 允許批量賦值(或用 $fillable)
}
執行遷移:
php artisan migrate
推薦 Navicat Premium、TablePlus、DBeaver 視覺化管理。
resources/views/admin/index.blade.php:
@extends('layouts.admin')
@section('content')
後台首頁
歡迎使用 Laravel 後台管理系統
@endsection
| 指令 | 用途 |
|---|---|
php artisan make:controller Name | 建立控制器 |
php artisan make:model Name -m | 建立模型+遷移 |
php artisan make:migration Name | 建立遷移檔 |
php artisan migrate | 執行遷移 |
php artisan migrate:rollback | 回滾最後一批遷移 |
php artisan route:list | 查看所有路由 |
php artisan tinker | 互動式 CLI 測試 Eloquent |
Laravel 學習曲線平緩,核心在於理解「服務容器→門面→契約→服務提供者」的 IOC 體系與 Eloquent ORM 的 Active Record 實現。多動手建專案,比單純閱讀文件有效得多。