Melhor forma para se organizar uma função generica
[Concluído]
Olá, tudo bem?
Atualmente estou construindo uma api e nos meus modelos eu tenho uma função que traz todos os itens filtrados com paginação, como em todos os modelos eu uso a mesma função, eu gostaria de saber qual a melhor forma para utilizar essa função de forma generica no laravel?
Olá, Ytalo! Tudo bem?
Me mostre um pouco mais dessa função, que dependendo o contexto dela tem abordagens diferentes.
Um caminho possível (dependendo do contexto) é criar um helper, básicamente definir um arquivo com funções em app/Helpers/functions.php
E nesse arquivo declarar todas as funcões que precisa:
if (! function_exists('fazAlgumaCoisa')) {
function fazAlgumaCoisa(Collection $items): array
{
// Código
}
}
Depois disso, basta declarar esse arquivo no composer.json em autoload -> "files": ["app/Helpers/functions.php"]
composer dump-autoload e pronto, a função estará global.
Olá, segue o modelo da função
private $itemsPerPage = 10;
public function getItems($data, $itemsPerPage = null)
{
$itemsPerPage = $data->input('itemsPerPage', $this->itemsPerPage);
if (isset($data['filter'])) {
$filter = $data['filter'];
$query->where(function ($query) use ($filter) {
$query->where('campo', 'LIKE', "%{$filter}%");
});
}
if (isset($data['campo'])) {
$query->where('campo', 'LIKE', "%{$data['campo']}%");
}
return $query->paginate($itemsPerPage ?? $this->itemsPerPage);
}
Uma alternativa possível seria criar uma trait, e nessa trait ter um método que aplicar estes filtros de forma condicional. Pegou a ideia?
Acredito que sim, eu realizei as alterações utilizando trait e aparentemente está funcionando bem, muito obrigado pela ajuda.
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!