1
resposta

Dúvida sobre o findBy

Bom dia. Eu tenho os seguintes alunos:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Eu fiz o seguinte código na minha lista de alunos:

** @var Aluno[]$alunosAsc */
$alunosAsc = $alunoRepository->findBy([], ['nome' => 'ASC'], 2, 3);

me retornou isso quando imprimi:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Só que como defini a partir do resultado 3, eu achei que retornaria Thales e Alexandra ordenados, porém percebi que talvez ele ordenasse primeiro para depois trazer só o resultado que eu queria. No caso fiz o teste de só ordenar:

echo "/nAlunos ordenados em forma ascendente por nome:\n";
/** @var Aluno[]$alunosAscNome */
$alunosAscNome = $alunoRepository->findBy([], ['nome' => 'ASC']);
foreach ($alunosAscNome as $aluno) {
    echo $aluno->nome . PHP_EOL; 
}

impressão:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Só que ainda assim não faz sentido, porque se eu defini que ele deve pegar a partir do 3 resultado, ainda q ele ordene antes, observando a ordenação verifiquei q ele deveria pegar Mariana e Telma e não Telma e Thales

1 resposta

Oi, Karolina! Tudo bem com você?

Peço desculpa pela demora para responder o seu tópico.

Para lhe explicar melhor, vou lhe apresentar um código de como seria os parâmetros de entrada desse método:

public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)

A estrutura do método findby pode ser representado conforme mostrado no código acima, mas cada parâmetro passado nesse método tem sua função para filtrar ou configurar o resultado da requisição. Que são as seguintes:

  1. $criteria: funciona como um filtro para os resultados com base em critérios específicos, e caso seja uma lista vazia, todos os registros serão retornados;

  2. $orderBy: este parâmetro define a ordenação dos resultados em um campo, podendo ser crescente ou decrescente;

  3. $limit: Este parâmetro limita o número de resultados retornados;

  4. $offset: este parâmetro define a posição inicial a partir da qual você deseja buscar os resultados.

No seu caso, você está definindo o $offset como "3", o que significa que você quer pular os primeiros 3 resultados e começar a busca a partir do 4º registro.

Por isso que o seu resultado, após a requisição, é "Telma" e "Thales", pois no método você buscou 2 resultados após os 3 primeiros.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.