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.

Nguyễn Dương Thế Vĩ 03/10/2026 · Updated: 03/10/2026 · 78 Views

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/PostController thì Laravel tạo thư mục con app/Http/Controllers/Api/ và tự đặt namespace đú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:refresh và db:wipe xoá 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:cache hoặc optimize, hàm env() chỉ còn hoạt động trong thư mục config/. Trong code, luôn đọc cấu hình bằng config('app.name'), không gọi env() 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.