Artisan คือเครื่องมือบรรทัดคำสั่งที่มาพร้อม Laravel ช่วยสร้างไฟล์ ตรวจเส้นทาง จัดการฐานข้อมูล ทดสอบระบบ และดูแลงานเบื้องหลัง ให้เปิดเทอร์มินัลที่ โฟลเดอร์รากของโปรเจกต์ ซึ่งมีไฟล์ artisan แล้วใช้รูปแบบ php artisan <คำสั่ง> [ตัวเลือก] คำสั่งที่มีจริงอาจต่างกันตามเวอร์ชันและแพ็กเกจที่ติดตั้ง จึงควรใช้ php artisan list ตรวจในโปรเจกต์ของตนเองก่อนเสมอ

info-php-artisan-laravel

#1. เริ่มต้นและค้นหาคำสั่ง

คำสั่ง ใช้เมื่อไร
php artisan list ดูคำสั่งทั้งหมดที่โปรเจกต์รองรับ
php artisan help migrate อ่านอาร์กิวเมนต์และตัวเลือกของคำสั่ง migrate
php artisan serve เปิดเว็บเซิร์ฟเวอร์สำหรับพัฒนาในเครื่อง
php artisan tinker ทดลองเรียก Model, Eloquent และโค้ดของแอปใน REPL
php artisan dev ใน Laravel 13 เปิดกระบวนการพัฒนาหลายตัวพร้อมกัน เช่น PHP server, queue worker, Pail และ Vite

หากใช้ Laravel Sail ให้เปลี่ยนส่วนหน้าจาก php artisan เป็น ./vendor/bin/sail artisan เช่น ./vendor/bin/sail artisan migrate เพื่อรันภายในคอนเทนเนอร์ ส่วน php artisan dev เป็นความสามารถที่อ้างอิงเอกสาร Laravel 13; โปรเจกต์รุ่นก่อนอาจใช้สคริปต์ composer run dev ที่กำหนดไว้แทน

#2. สร้างไฟล์งานด้วย make:*

คำสั่ง ผลลัพธ์
php artisan make:model Post สร้าง Eloquent Model
php artisan make:model Post -m สร้าง Model พร้อม migration
php artisan make:model Post -mfsc สร้าง Model, migration, factory, seeder และ controller
php artisan make:migration create_posts_table สร้าง migration เพื่อแก้โครงสร้างฐานข้อมูล
php artisan make:controller PostController --resource สร้าง controller ที่มีเมธอดสำหรับ resource
php artisan make:controller PostController --api สร้าง resource controller สำหรับ API โดยไม่มี create และ edit
php artisan make:request StorePostRequest สร้าง Form Request สำหรับตรวจข้อมูลเข้า
php artisan make:job ProcessPost สร้าง Job สำหรับประมวลผลในคิว
php artisan make:seeder PostSeeder สร้างตัวเติมข้อมูลเริ่มต้น
php artisan make:test PostTest สร้างไฟล์ทดสอบ
php artisan make:command PublishPosts สร้าง Artisan command ของแอป

ตัวอย่าง: เมื่อเริ่มฟีเจอร์บทความ ให้รัน php artisan make:model Post -mfsc จากนั้นแก้ migration, Model, controller และ seeder ที่สร้างขึ้นเอง คำสั่งสร้างเพียงโครงไฟล์ ยังต้องเขียนกติกาธุรกิจและเพิ่ม route ให้ครบ

#3. ฐานข้อมูล: migration และ seeding

คำสั่ง ความหมาย
php artisan migrate:status ดู migration ที่รันแล้วและที่ยังรอ
php artisan migrate รัน migration ที่ยังไม่เคยรัน
php artisan migrate:rollback ย้อน batch ล่าสุด ซึ่งอาจมีหลายไฟล์
php artisan migrate:rollback --step=1 ย้อน migration ล่าสุดหนึ่งขั้น
php artisan db:seed รัน DatabaseSeeder
php artisan db:seed --class=PostSeeder รัน seeder ที่ระบุ
php artisan migrate:fresh --seed ลบตารางทั้งหมด สร้างใหม่ และเติมข้อมูล

ลำดับฝึกบนฐานข้อมูลสำหรับพัฒนา:

php artisan migrate:status
php artisan migrate
php artisan db:seed

ระวังข้อมูลหาย: migrate:fresh ลบตารางทั้งหมดในฐานข้อมูลที่เลือก แม้มีตารางของแอปอื่นร่วมอยู่ ห้ามใช้กับฐานข้อมูล production หรือฐานข้อมูลที่แชร์โดยไม่ตรวจการเชื่อมต่อและสำรองข้อมูลก่อน migrate:rollback ก็อาจทำให้ข้อมูลในตารางที่ถูกย้อนหายได้ ใน production คำสั่ง migration/seed บางชนิดอาจขอการยืนยัน; --force ข้ามการยืนยันนั้น จึงต้องใช้เฉพาะเมื่อทราบผลกระทบแล้ว

#4. ตรวจ route และไฟล์ที่เข้าถึงได้

php artisan route:list
php artisan route:list --path=api
php artisan route:list -v
php artisan storage:link

route:list ช่วยตรวจ URI, HTTP method, ชื่อ route และ action หากต้องการดู middleware ใช้ -v ส่วน storage:link สร้าง symbolic link จาก public/storage ไปยัง storage/app/public สำหรับไฟล์บน public disk; ไม่ได้ทำให้ไฟล์ใน private disk กลายเป็นสาธารณะ

#5. รันชุดทดสอบ

php artisan test
php artisan test --testsuite=Feature --stop-on-failure
php artisan test --filter=PostTest
php artisan test --profile

เริ่มจาก test เพื่อรันทั้งชุด ใช้ --filter เมื่อแก้เฉพาะจุด และใช้ --profile เพื่อตรวจกรณีทดสอบที่ช้า หากต้องการ php artisan test --parallel ให้ติดตั้ง brianium/paratest เป็น dev dependency ก่อน และเตรียมฐานข้อมูลทดสอบให้ถูกต้อง

#6. คิวและงานตามเวลา

คำสั่ง งานที่ทำ
php artisan queue:work เริ่ม worker และรอประมวลผล Job ต่อเนื่อง
php artisan queue:work --once รับงานหนึ่งงานแล้วจบ เหมาะสำหรับตรวจพฤติกรรม
php artisan queue:failed แสดงรายการ Job ที่ล้มเหลว
php artisan queue:retry <job-id> ลองรัน Job ที่ล้มเหลวอีกครั้งหลังแก้สาเหตุ
php artisan queue:restart ส่งสัญญาณให้ worker ออกหลังจบงานปัจจุบัน เพื่อให้ process manager เปิดใหม่ด้วยโค้ดล่าสุด
php artisan schedule:list แสดงงานตามกำหนดและเวลาเรียกครั้งถัดไป
php artisan schedule:run ตรวจและรันงานที่ถึงเวลาขณะนั้น
php artisan schedule:work เปิด scheduler ค้างไว้ระหว่างพัฒนาในเครื่อง

queue:work เป็นกระบวนการที่ทำงานต่อเนื่องและไม่โหลดโค้ดใหม่เองหลัง deploy จึงใช้ queue:restart ร่วมกับ process manager เช่น Supervisor ใน production ส่วน scheduler บนเซิร์ฟเวอร์มักตั้ง cron ให้เรียก schedule:run ทุกนาที; การสั่งครั้งเดียว ไม่ได้ ตั้งเวลาให้อัตโนมัติ

#7. แคชและการ deploy

คำสั่ง ใช้ทำอะไร
php artisan optimize สร้างแคชสำหรับ config, event, route และ view เพื่อใช้ตอน deploy
php artisan config:cache รวมและแคชการตั้งค่า
php artisan route:cache แคชการลงทะเบียน route
php artisan view:cache คอมไพล์ Blade views ล่วงหน้า
php artisan optimize:clear ล้างแคชที่ optimize สร้าง และคีย์ใน default cache driver

ข้อควรจำ: หลัง config:cache ให้เรียก env() ภายในไฟล์ config เท่านั้น เพราะ .env จะไม่ถูกโหลดสำหรับการเรียก env() นอกไฟล์ config ตามปกติ และ optimize:clear อาจล้าง application cache ที่แอปใช้อยู่ด้วย จึงไม่ควรสั่งโดยไม่พิจารณาผลกระทบใน production

#ตัวอย่างลำดับการทำงานหนึ่งฟีเจอร์

# 1. สร้างโครงของฟีเจอร์ Post
php artisan make:model Post -mfsc

# 2. หลังเขียน migration และโค้ดแล้ว จัดการฐานข้อมูล
php artisan migrate:status
php artisan migrate

# 3. ตรวจ route ที่เพิ่มไว้เอง และรันชุดทดสอบ
php artisan route:list --path=api
php artisan test --filter=PostTest

# 4. ตรวจงานที่กำหนดเวลาและงานในคิวเมื่อฟีเจอร์เกี่ยวข้อง
php artisan schedule:list
php artisan queue:failed

จำให้ขึ้นใจ: เริ่มจาก list และ help เมื่อไม่แน่ใจ; ตรวจ migrate:status ก่อนเปลี่ยนฐานข้อมูล; รัน test หลังแก้โค้ด; และตรวจฐานข้อมูลเป้าหมายทุกครั้งก่อนใช้คำสั่งที่ลบข้อมูล

#เอกสารอ้างอิง