Leitfaden zu Controller Repository Service Model in Laravel

Der grundlegende Implementierungsleitfaden für Controller- Repository -in hilft Ihnen dabei, Ihren Quellcode so zu organisieren, dass er einfach zu verwalten und zu warten ist Service model. Laravel Hier ein konkretes Beispiel, wie Sie diese Struktur umsetzen können:

Model

Hier definieren Sie die Attribute und Methoden für die Interaktion mit der Datenbank. Laravel stellt den Eloquent ORM-Mechanismus für die Arbeit mit Modellen bereit. Erstellen wir zum Beispiel eine model für die Posts Tabelle:

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

Repository

Der repository fungiert als Vermittler zwischen dem Controller und dem Model. Es enthält Methoden zum Ausführen von Datenbankoperationen über model. Dies trägt dazu bei, die Datenbanklogik von der Datenbanklogik zu trennen controller und erleichtert das Ändern oder Testen der Datenbanklogik.

// 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

Der service enthält Geschäftslogik und kommuniziert mit dem Repository. Die Controller rufen Methoden von auf, um Service Anfragen zu bearbeiten und entsprechende Daten zurückzugeben. Dies trägt dazu bei, die Geschäftslogik von der Geschäftslogik zu trennen controller und vereinfacht Tests und Wartung.

// 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

Hier controller bearbeiten Sie Benutzeranfragen, rufen Methoden von auf, um Service Daten abzurufen oder zu senden, und geben Ergebnisse an den Benutzer zurück.

// 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  
}  

Durch die Anwendung dieser Struktur können Sie verschiedene Teile Ihrer Laravel Anwendung effizient verwalten. Darüber hinaus macht die Trennung von Geschäftslogik, Speicherlogik und Kommunikation zwischen Klassen Ihre Codebasis flexibel, wartbar und testbar.