Normally I put the logic in the service classes without using repository, for example, something like this:
namespace App\ProjectName\Profile;
use App\User;
class AccountService
{
private $userModel;
public function __construct(User $userModel)
{
$this->userModel = $userModel;
}
public function detail()
{
$user = \Auth::User();
return [
'id' => $user->id,
'name' => $user->name,
'email' => $user->email,
'keys' => $user->keys,
];
}
public function addKey($name, $key)
{
return $this->userModel->keys()->create([
'name' => $name,
'key' => $key
]);
}
}
I have seen some example out there, refactored even further by creating repository classes. something like UserController inputs data, sends it to UserCreatorService, which gets the UserRepository which in turn gets the UserModel. It seem UserCreatorService is a repeat of UserRepository?