คู่มือ Controller Repository Service Model เข้า Laravel

คู่มือการใช้งานขั้นพื้นฐานสำหรับ Controller- Repository- Service model ใน Laravel ช่วยให้คุณจัดระเบียบซอร์สโค้ดของคุณในลักษณะที่ง่ายต่อการจัดการและบำรุงรักษา นี่คือตัวอย่างที่ชัดเจนของวิธีที่คุณสามารถใช้โครงสร้างนี้:

Model

นี่คือที่ที่คุณกำหนดคุณลักษณะและวิธีการโต้ตอบกับฐานข้อมูล Laravel จัดเตรียมกลไก Eloquent ORM เพื่อทำงานกับโมเดล ตัวอย่างเช่น เรามาสร้าง model ตารางกัน Posts:

// app/Models/Post.php  
namespace App\Models;  
  
use Illuminate\Database\Eloquent\Model;  
  
class Post extends Model  
{  
    protected $fillable = ['title', 'content'];  
}  

Repository

โดย repository ทำหน้าที่เป็นตัวกลางระหว่าง Controller และ Model. มันมีวิธีการในการดำเนินการฐานข้อมูลผ่าน model. ซึ่งจะช่วยแยกตรรกะฐานข้อมูลออกจาก controller และทำให้ง่ายต่อการเปลี่ยนแปลงหรือทดสอบตรรกะฐานข้อมูล

// app/Repositories/PostRepository.php  
namespace App\Repositories;  
  
use App\Models\Post;  
  
class PostRepository  
{  
    public function create($data)  
    {  
        return Post::create($data);  
    }  
      
    public function getAll()  
    {  
        return Post::all();  
    }  
      
    // Other similar methods  
}  

Service

ประกอบด้วย service ตรรกะทางธุรกิจและสื่อสารกับ Repository. วิธี การ Controller จะเรียกจากเพื่อ Service จัดการคำขอและส่งกลับข้อมูลที่เกี่ยวข้อง ซึ่งจะช่วยแยกตรรกะทางธุรกิจออกจาก controller และทำให้การทดสอบและการบำรุงรักษาง่ายขึ้น

// app/Services/PostService.php  
namespace App\Services;  
  
use App\Repositories\PostRepository;  
  
class PostService  
{  
    protected $postRepository;  
      
    public function __construct(PostRepository $postRepository)  
    {  
        $this->postRepository = $postRepository;  
    }  
      
    public function createPost($data)  
    {  
        return $this->postRepository->create($data);  
    }  
      
    public function getAllPosts()  
    {  
        return $this->postRepository->getAll();  
    }  
      
    // Other similar methods  
}  

Controller

นี่ controller คือที่ที่คุณจัดการคำขอของผู้ใช้ เรียกวิธีการจาก เพื่อ Service ดึงหรือส่งข้อมูล และส่งคืนผลลัพธ์ให้กับผู้ใช้

// app/Http/Controllers/PostController.php  
namespace App\Http\Controllers;  
  
use Illuminate\Http\Request;  
use App\Services\PostService;  
  
class PostController extends Controller  
{  
    protected $postService;  
      
    public function __construct(PostService $postService)  
    {  
        $this->postService = $postService;  
    }  
      
    public function create(Request $request)  
    {  
        $data = $request->only(['title', 'content']);  
        $post = $this->postService->createPost($data);  
        // Handle the response  
    }  
      
    public function index()  
    {  
        $posts = $this->postService->getAllPosts();  
        // Handle the response  
    }  
      
    // Other similar methods  
}  

ด้วยการใช้โครงสร้างนี้ คุณสามารถจัดการส่วนต่างๆ ของ Laravel แอปพลิเคชัน ของคุณได้อย่างมีประสิทธิภาพ นอกจากนี้ การแยกตรรกะทางธุรกิจ ตรรกะการจัดเก็บข้อมูล และการสื่อสารระหว่างคลาสต่างๆ ทำให้โค้ดเบสของคุณมีความยืดหยุ่น บำรุงรักษาได้ และทดสอบได้