Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Dúvida] método orderBy()

Boa tarde. Fiz a implementação do escopo para buscar séries ordenadas por nome:

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

Porém ele está montando duas ordenações diferentes para quem começa com maiúscula e quem começa com letra minúscula:

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

Pesquisei como ignorar se for letra maiúscula e minúscula, mas nada funcionou. Estou usando Laravel v9.30.1 e PHP 8.1.3

4 respostas

Olá, Karolina. A configuração de como comparar caracteres em relação a case-sensitive não é do PHP. É do banco de dados. Você precisa modar o COLLATE do banco para algo "case-insensitive"

É nesse arquivo? Porque não funcionou

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

solução!

"case-insensitive" não é o valor. Para o charset utf8mb4, utf8mb4_0900_ai_ci é um exemplo de collate que é case-insensitive. Ser case-insensitive significa que ele ignora a caixa das letras (se é maiúscula ou minúscula) em comparações. Mas se me lembro corretamente, nós usamos SQLite nesse treinamento e não MySQL.

Pra alterar no SQLite é um pouco mais chato. Você precisaria definir a coluna como NOCASE na criação. Outra alternativa é, ao invés de usar o método order, usar orderByRaw, da seguinte forma:

$queryBuilder->orderByRaw('nome COLLATE NOCASE');

Sim usa sqlite, coloquei no lugar errado

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software