-
Notifications
You must be signed in to change notification settings - Fork 120
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How can I return with an array of users #27
Comments
Thanks for opening this issue. Once closed, we will ask you and to all participants to provide open feedback about your experience. Thanks in advance! |
I want to know too. I created a data transformer for a collection class in my project. Application service: public function execute($request = null)
{
// ...
$users = // ...
return $this->usersDataTransformer->write($users)->read();
} Data transformer for a collection class: class UsersDtoDataTransformer implements UsersDataTransformer
{
private $users;
private $userDataTransformer;
public function __construct(UserDtoDataTransformer $userDataTransformer)
{
$this->userDataTransformer = $userDataTransformer;
}
public function write(Users $users): self
{
$this->users = $users;
return $this;
}
public function read()
{
// Should I wrap this with a DTO?
return array_map(function (User $user): object {
return $this->userDataTransformer->write($user)->read();
}, $this->users->toArray());
}
} If pagination is needed, I created a data transformer in the infrastructure layer. namespace MyApp\Infrastructure\Application\DataTransformer\User;
// uses...
class UsersLaravelLengthAwarePaginatorDataTransformer implements UsersDataTransformer
{
private $users;
private $usersDataTransformer;
private $perPage = 10;
private $currentPage;
private $options;
public function __construct(UsersDtoDataTransformer $usersDataTransformer)
{
$this->usersDataTransformer = $usersDataTransformer;
$this->currentPage = LengthAwarePaginator::resolveCurrentPage();
$this->options = [
'path' => LengthAwarePaginator::resolveCurrentPath(),
];
}
public function setPerPage(int $perPage): self
{
$this->perPage = $perPage;
return $this;
}
public function write(Users $users): self
{
$this->users = $users;
return $this;
}
public function read()
{
$users = $this->usersDataTransformer->write($this->users)->read();
// Should I wrap it with a DTO?
return new LengthAwarePaginator(
array_slice(
$users,
$this->perPage * ($this->currentPage - 1),
$this->perPage
),
count($users),
$this->perPage,
$this->currentPage,
$this->options
);
}
} I have following questions.
|
In all of your examples in application services you illustrate how to return a DTO but with one user
so I need to know how to return a collection of users
this is what you did with one user, or in another example, you return a user transformer:
and what should to be done in pagination?
The text was updated successfully, but these errors were encountered: