Ich arbeite in meinem Laravel 5.4
Projekt mit der Repository Pattern
(ich bin ziemlich neu zu diesem Muster). Ich habe rot viel über diese auf dem Netz, aber ich habe noch zwei wichtige Fragen:Laravel Repository Muster Erklärung
> Frage 1:
Stellen verwende ich Laravel ORM Eloquent
und ich habe eine Schnittstelle, die wie folgt aussieht:
<?php
namespace App\Repositories\User;
interface UserRepoInterface
{
/**
* @param array $user
*/
public function update(array $request, User $user);
}
Sie sehen, dass ich das eloquent User
Modell wie ein Parameter angegeben haben.
Die eloquent Implementierung sieht wie folgt aus:
public function update(array $request, User $user)
{
$user->name = $request['name'];
$user->last_name = $request['last_name'];
$user->email = $request['email'];
$toUpdate->save();
}
Also meine Frage:
Ist es falsch, die eloquent User
Modell in meiner Schnittstelle zu codieren? In vielen Beispielen im Web sehe ich Leute, die das tun, aber was, wenn ich die eloquente Implementierung mit einer dateibasierten Implementierung austauschen möchte? Das ist ein Problem, weil ich ein User
Modell an die Update-Methode übergeben muss!
Was ist die Lösung für dieses Problem sollte ich nur $user
anstelle von User $user
deklarieren?
> Frage 2:
Wie soll ich Paginierung umgehen?
Zum Beispiel in meinem eloquent UserRepository
Ich habe eine Methode, die wie folgt aussieht:
public function index()
{
return User::orderBy('name', 'asc')
->withCount('messages')
->with('corporation')
->paginate(10);
}
dies falsch ist? Sollte ich nur in meinem Controller paginieren?
Eine gute Erklärung würde mir sehr helfen.