คู่มือการใช้งานขั้นพื้นฐานสำหรับ 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 แอปพลิเคชัน ของคุณได้อย่างมีประสิทธิภาพ นอกจากนี้ การแยกตรรกะทางธุรกิจ ตรรกะการจัดเก็บข้อมูล และการสื่อสารระหว่างคลาสต่างๆ ทำให้โค้ดเบสของคุณมีความยืดหยุ่น บำรุงรักษาได้ และทดสอบได้