Các lệnh php artisan hay dùng nhất trong Laravel 13
Artisan là công cụ dòng lệnh đi kèm Laravel. Bạn dùng nó để chạy server, tạo file (controller, model, migration…), làm việc với database, xoá cache và nhiều việc khác. Thay vì tạo file và gõ code mẫu bằng tay, bạn chỉ cần một dòng lệnh.
Mọi lệnh đều chạy ở thư mục gốc của project (nơi có file artisan):
php artisan <tên-lệnh> [tham số] [--tuỳ-chọn]
1. Ba lệnh để "tự học" Artisan
php artisan list # Liệt kê tất cả lệnh có sẵn
php artisan help migrate # Xem hướng dẫn và các tuỳ chọn của một lệnh
php artisan make:model --help # Cách viết khác của help
Mẹo: quên tuỳ chọn của lệnh nào thì thêm
--help. Không cần phải học thuộc.
php artisan about # Thông tin project: phiên bản Laravel, PHP, môi trường, driver cache/DB...
2. Chạy project
serve: khởi động server để phát triển
php artisan serve
# INFO Server running on [http://127.0.0.1:8000].
Đổi cổng nếu cổng 8000 đang bận:
php artisan serve --port=8080
Nhấn Ctrl + C để dừng server.
key:generate: tạo khoá mã hoá
php artisan key:generate
Lệnh này ghi giá trị APP_KEY vào file .env. Bắt buộc chạy một lần sau khi clone
project về. Nếu thiếu khoá hoặc khoá sai, Laravel báo lỗi
Unsupported cipher or incorrect key length.
3. Nhóm make:*: tạo file nhanh
Đây là nhóm bạn sẽ dùng nhiều nhất. Mỗi lệnh tạo sẵn file với code mẫu, đặt đúng thư mục.
| Lệnh | File được tạo |
|---|---|
php artisan make:controller PostController |
app/Http/Controllers/PostController.php |
php artisan make:model Post |
app/Models/Post.php |
php artisan make:migration create_posts_table |
database/migrations/xxxx_create_posts_table.php |
php artisan make:seeder PostSeeder |
database/seeders/PostSeeder.php |
php artisan make:factory PostFactory |
database/factories/PostFactory.php |
php artisan make:request StorePostRequest |
app/Http/Requests/StorePostRequest.php |
php artisan make:middleware CheckAge |
app/Http/Middleware/CheckAge.php |
php artisan make:policy PostPolicy --model=Post |
app/Policies/PostPolicy.php |
php artisan make:resource PostResource |
app/Http/Resources/PostResource.php |
php artisan make:view posts.index |
resources/views/posts/index.blade.php |
php artisan make:component Alert |
app/View/Components/Alert.php + view |
php artisan make:mail WelcomeMail |
app/Mail/WelcomeMail.php |
php artisan make:job SendEmailJob |
app/Jobs/SendEmailJob.php |
php artisan make:command SendReport |
app/Console/Commands/SendReport.php |
php artisan make:test PostTest |
tests/Feature/PostTest.php |
php artisan make:enum Status |
app/Enums/Status.php |
Controller: các tuỳ chọn hay dùng
php artisan make:controller PostController # Controller trống
php artisan make:controller PostController --resource # Có sẵn 7 method CRUD (index, create, store, show, edit, update, destroy)
php artisan make:controller Api/PostController --api # 5 method cho API (không có create/edit)
php artisan make:controller PostController --resource --model=Post # Method nhận sẵn tham số Post $post
Viết
Api/PostControllerthì Laravel tạo thư mục conapp/Http/Controllers/Api/và tự đặtnamespaceđúng.
Model: tạo nhiều file cùng lúc
Đây là "combo" được dùng rất nhiều:
php artisan make:model Post -mcr
| Cờ | Ý nghĩa |
|---|---|
-m |
Tạo kèm migration |
-c |
Tạo kèm controller |
-r |
Controller dạng resource (CRUD) |
-f |
Tạo kèm factory |
-s |
Tạo kèm seeder |
-R |
Tạo kèm Form Request (Store/Update) |
-a |
Tất cả: migration, seeder, factory, policy, resource controller, form request |
Ví dụ php artisan make:model Post -a tạo cùng lúc 8 file cho đối tượng Post: model,
migration, seeder, factory, policy, controller và 2 Form Request.
Tên migration nên đặt thế nào?
Laravel đoán tên bảng từ tên migration:
php artisan make:migration create_posts_table # Tạo bảng mới: Schema::create('posts', ...)
php artisan make:migration add_status_to_posts_table # Thêm cột: Schema::table('posts', ...)
4. Database: migration và seeder
Chạy migration
php artisan migrate # Chạy các migration chưa chạy
php artisan migrate:status # Xem migration nào đã chạy, migration nào chưa
Quay lại (rollback)
php artisan migrate:rollback # Huỷ lần migrate gần nhất
php artisan migrate:rollback --step=2 # Huỷ 2 migration gần nhất
Làm lại từ đầu
php artisan migrate:fresh # XOÁ TẤT CẢ bảng rồi chạy lại toàn bộ migration
php artisan migrate:fresh --seed # Như trên, sau đó chạy seeder để có dữ liệu mẫu
php artisan migrate:refresh # Rollback toàn bộ migration rồi chạy lại
⚠️ Cẩn thận:
migrate:fresh,migrate:refreshvàdb:wipexoá sạch dữ liệu. Chỉ dùng ở máy local, không bao giờ chạy trên server thật.
Seeder: đổ dữ liệu mẫu
php artisan db:seed # Chạy DatabaseSeeder
php artisan db:seed --class=PostSeeder # Chỉ chạy một seeder
Xem thông tin database
php artisan db:show # Tổng quan: loại DB, phiên bản, số bảng, dung lượng
php artisan db:table posts # Chi tiết bảng posts: các cột, kiểu dữ liệu, index
php artisan model:show Post # Thông tin model: thuộc tính, quan hệ, bảng tương ứng
php artisan db # Mở CLI của database (mysql, sqlite...)
5. Route
php artisan route:list # Liệt kê tất cả route
php artisan route:list --path=api # Chỉ route có "api" trong URL
php artisan route:list --name=posts # Lọc theo tên route
php artisan route:list --method=POST # Lọc theo phương thức
php artisan route:list --except-vendor # Ẩn route của các package
php artisan route:list -v # Hiện thêm middleware
Ví dụ kết quả:
GET|HEAD bai-viet ............ posts.index › PostController@index
GET|HEAD bai-viet/{id} ........ posts.show › PostController@show
Route "không chạy" hoặc bị lỗi 404? Hãy chạy
route:listđầu tiên.
6. Cache: lý do "sửa rồi mà không thấy thay đổi"
Laravel cache config, route và view để chạy nhanh hơn. Trong lúc phát triển, cache cũ có thể khiến thay đổi của bạn "không có tác dụng".
| Lệnh | Xoá gì |
|---|---|
php artisan config:clear |
Cache cấu hình (sửa .env hoặc config/*.php mà không thấy thay đổi) |
php artisan route:clear |
Cache route |
php artisan view:clear |
View Blade đã biên dịch |
php artisan cache:clear |
Cache dữ liệu của ứng dụng (Cache::put, Cache::remember...) |
php artisan optimize:clear |
Xoá tất cả các cache trên (và một số cache khác) |
Mẹo "chữa cháy": gặp lỗi khó hiểu sau khi sửa cấu hình? Chạy
php artisan optimize:clear.
Khi deploy lên server thật, làm ngược lại là tạo cache để tăng tốc:
php artisan optimize # Cache config, route, view, event cùng lúc
Sau khi chạy
config:cachehoặcoptimize, hàmenv()chỉ còn hoạt động trong thư mụcconfig/. Trong code, luôn đọc cấu hình bằngconfig('app.name'), không gọienv()trực tiếp.
Xem nhanh giá trị cấu hình:
php artisan config:show app # Toàn bộ config/app.php
php artisan config:show database.default
7. Tinker: thử code PHP ngay trong terminal
tinker mở một môi trường dòng lệnh đã nạp sẵn toàn bộ project. Bạn có thể thử model,
helper, query mà không cần tạo route hay controller.
php artisan tinker
> App\Models\User::count();
= 3
> App\Models\User::first()->email;
= "admin@example.com"
> App\Models\Post::create(['title' => 'Bài thử', 'content' => 'Nội dung']);
> now()->addDays(7)->format('d/m/Y');
= "10/10/2026"
> exit
Chạy một dòng rồi thoát luôn:
php artisan tinker --execute="echo App\Models\User::count();"
8. Test
php artisan test # Chạy toàn bộ test
php artisan test --filter=PostTest # Chỉ chạy test có tên khớp
php artisan test --parallel # Chạy song song cho nhanh
php artisan make:test PostTest # Tạo feature test
php artisan make:test PostTest --unit # Tạo unit test
9. Storage và chế độ bảo trì
storage:link: cho phép truy cập file upload từ web
php artisan storage:link
Lệnh này tạo liên kết public/storage trỏ tới storage/app/public. Nhờ đó ảnh người
dùng upload có thể mở được qua URL /storage/ten-anh.jpg.
down / up: bật/tắt chế độ bảo trì
php artisan down # Website trả về trang 503 "đang bảo trì"
php artisan down --secret="bi-mat" # Bạn vẫn vào được qua /bi-mat
php artisan up # Mở lại website
10. Hàng đợi (queue) và lịch chạy (schedule)
Hai nhóm lệnh này dùng khi project đã lớn hơn. Bạn chỉ cần biết là chúng tồn tại:
php artisan queue:work # Chạy worker xử lý các job trong hàng đợi (gửi mail, xử lý ảnh...)
php artisan queue:failed # Xem các job bị lỗi
php artisan queue:retry all # Chạy lại tất cả job lỗi
php artisan schedule:list # Xem các tác vụ đã lên lịch
php artisan schedule:work # Chạy scheduler ở local (mỗi phút kiểm tra một lần)
11. Tự viết lệnh Artisan của riêng bạn
php artisan make:command SayHello
Sửa file app/Console/Commands/SayHello.php:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class SayHello extends Command
{
// Tên lệnh và tham số: {name} bắt buộc, {--upper} là tuỳ chọn
protected $signature = 'say:hello {name} {--upper}';
protected $description = 'Chào một người theo tên';
public function handle(): int
{
$message = 'Xin chào, '.$this->argument('name').'!';
if ($this->option('upper')) {
$message = mb_strtoupper($message);
}
$this->info($message);
return self::SUCCESS;
}
}
Chạy thử:
php artisan say:hello Vi
# Xin chào, Vi!
php artisan say:hello Vi --upper
# XIN CHÀO, VI!
Laravel tự nhận diện lệnh trong app/Console/Commands, bạn không cần đăng ký thêm ở đâu.
Quy trình thực tế: tạo tính năng "Bài viết" từ đầu
Đây là chuỗi lệnh thường dùng khi thêm một tính năng mới:
# 1. Tạo model + migration + seeder + factory + resource controller
php artisan make:model Post -mfsc -r
# 2. Sửa file migration (thêm cột), rồi chạy
php artisan migrate
# 3. Viết seeder, rồi đổ dữ liệu mẫu
php artisan db:seed --class=PostSeeder
# 4. Thêm Route::resource('posts', PostController::class) vào routes/web.php, rồi kiểm tra
php artisan route:list --name=posts
# 5. Thử nhanh dữ liệu
php artisan tinker --execute="echo App\Models\Post::count();"
# 6. Chạy server và mở trình duyệt
php artisan serve
Bảng tra nhanh
| Bạn muốn… | Lệnh |
|---|---|
| Chạy project | php artisan serve |
| Tạo APP_KEY | php artisan key:generate |
| Tạo controller CRUD | php artisan make:controller PostController --resource |
| Tạo model + migration + controller | php artisan make:model Post -mcr |
| Chạy migration | php artisan migrate |
| Huỷ migration gần nhất | php artisan migrate:rollback |
| Làm lại DB + dữ liệu mẫu (local) | php artisan migrate:fresh --seed |
| Xem danh sách route | php artisan route:list |
Sửa .env mà không thấy thay đổi |
php artisan config:clear |
| Xoá mọi cache | php artisan optimize:clear |
| Thử code nhanh | php artisan tinker |
| Chạy test | php artisan test |
| Mở link ảnh upload | php artisan storage:link |
| Bảo trì website | php artisan down / php artisan up |
Lời khuyên: bạn không cần thuộc hết các lệnh trên. Hãy nhớ php artisan list và
--help, phần còn lại bạn sẽ quen dần khi dùng hằng ngày.