Laravel – วิธีรวม Models เข้าไว้ด้วยกัน

เอาหล่ะครับ ไม่ สามารถ ทราบว่ามีใครทำงานบน Laravel4.x แล้วย้ายมาเป็น Laravel5.x แบบผมบ้างมั้ยครับ ? ผมเชื่อว่าถ้าใครผ่านประสบการณ์ย้าย version แบบผมจะมีจุดขัดใจแน่ ๆ หล่ะ 1 จุดที่เปลี่ยนแปลงไปของ Laravel5.x ก็คือ ทางทีมงาน**ตื้ด**ดันย้าย Models ออกมาอยู่ภายใต้ app โฟลเดอร์

ความเหมือนที่แตกต่าง

คนที่ย้ายมาแบบผมคงเข้าใจกันดี แต่ถ้าคนที่มาไม่ทันยุค 4.x ไฟล์ Models ในยุคนั้นจะถูกรวมอยู่ใน root-project/app/models มีที่ทางเป็นของตัวเองดูไม่รกตา แต่เมื่อ Laravel เปลี่ยนมาเป็น version 5.x ปุ๊บโครงสร้างต่าง ๆ มันได้เปลี่ยนไปเยอะที่เดียว เช่น

ที่อยู่ของ controller ย้ายจาก root-project/app/controllers เป็น root-project/app/Http/Controllers
ที่อยู่ของ config ย้ายจาก root-project/app/config เป็น root-project/config
ที่อยู่ของ database ย้ายจาก root-project/app/database เป็น root-project/database
Middleware ใน Laravel4.x เมื่อก่อนก็จะมันว่า Filter
file-map

แล้วทีนี้ตัวเจ้าปัญหาที่ผมเจอหลังจากเปลี่ยน Version มาก็คือ Models ครับ เพราะ ว่าเมื่อก่อนพวกมันมีบ้านเป็นของตัว แต่พอเปลี่ยนมันดังไม่มีนี้สิครับ ทั้ง ๆ ที่ Controllers ก็ยังมีแต่แค่เปลี่ยนสถานที่ แต่เจ้า Models ดันโดนปล่อยเคว้งคว้างซะอย่างงั้น โดยมันย้ายจาก root-project/app/models เป็น root-project/app วอทเดอะเฮล !!

เอาหลังจากเกิ่นมานาน เรามาเริ่มหาบ้านในเจ้า Models มันอยู่กันดีกว่าครับ โดยผมจะย้ายมันเข้าไปอยู่ใน root-project/app/Models เอาหล่ะครับ เริ่มกันเลย !!

กำหนด Composer ให้รู้จักโครงสร้างใหม่

เริ่มจากการเข้าไปแก้ไขไฟล์ composer.json โดยให้มองหา

ให้เพิ่มข้อมูลให้เป็นดังนี้ครับ แล้วบันทึก

วิธีสร้าง Models สำหรับโครงสร้างใหม่

การสร้าง Models จาก artisan โดยปกติเราจะต้องใช้คำสั่งว่า

ให้เปลี่ยนป็น

หลังจากนั้นเราจะได้ไฟล์ Models Company.php ที่ในโครงสร้างใหม่ที่เราต้องการ root-project/app/Models/Company.php

แต่ !! เราต้องเข้าไปแก้ไข namespace ในไฟล์ Company.php นิดหน่อยนะครับ เพราะเวลาสร้าง model ด้วยวิธีใหม่ namespace จะเป็น App\Models; ครับ ซึ่งจริง ๆ มันควรจะเป็น App;  เท่านั้นครับ

แก้เป็น

หลังจากนั้นให้รันคำสั่งด้านล่าง เพื่อเป็นการทำให้ Composer รู้จักไฟล์ Models ใหม่ที่สร้างขึ้นมา

วิธีย้าย Models ที่มีอยู่เดิมเข้ามาในโครงสร้างใหม่

ก็ไม่มีอะไรมากครับ เพียงแค่ย้ายไฟล์ Models ทั้งหมดที่มีอยู่แล้วย้ายเข้าไปที่ root-project/app/Models เท่านั้นหล่ะครับ แต่ที่มีเพิ่มเติมก็คือให้รันคำสั่งนี้เพิ่ม เพื่อให้ Composer รู้จักครับ ( ถ้าไม่รันมันจะแจ้งว่าไม่เจอ Model นะครับ )

つづく

เป็นไงกันบ้างครับ กับความรู้ที่ผมนำมาเสนอ ถ้าถูกใจหรือมีขอติชมอะไรก็ Comment บอกกันมานะครับ ผมรออ่านอยู่ ส่วนถ้าใครอยากได้ความรู้ตรงไหนเพิ่มเติ่มก็ Comment บอกกันได้นะครับ ถ้าผมมีวิธีการหรืออะไร ก็จะมาตอบให้ครับ  :))

แล้วพบกันใหม่ในโพสถัดไป ส่วนตอนนี้บายยยยยย !!