Eu adoraria poder especificar algo como isto:
-- [params]
-- groups.id :group_id
para obter uma entrada de parâmetro que seja um menu suspenso de grupos. Eu nomeei o valor group_id aqui porque presumo que é o que tal menu suspenso me daria.
Eu adoraria poder especificar algo como isto:
-- [params]
-- groups.id :group_id
para obter uma entrada de parâmetro que seja um menu suspenso de grupos. Eu nomeei o valor group_id aqui porque presumo que é o que tal menu suspenso me daria.
Eu acho que isso também seria muito útil.
Algo como o parâmetro selecionável user_id existente, mas para grupos. Seria ainda melhor se pudesse aceitar múltiplos valores. ![]()
Espere, o quê?
Você pode me indicar onde mostra como usá-lo?
Você pode usar algo como:
-- [params]
-- user_id :user
SELECT *
FROM posts
WHERE user_id =:user
LIMIT 5
E isso trará um menu suspenso onde você pode autocompletar um usuário. ![]()
No entanto, acabei de notar que, na primeira vez que você o executa no momento, ele gera um erro e não exibe a caixa de parâmetros, mas o faz se você atualizar a página. Verei se consigo que alguém verifique isso. ![]()
Peça (e espere) e você receberá… acabamos de adicionar suporte para um parâmetro :group_list neste PR.
Aqui está um exemplo do recurso em uso:
-- [params]
-- group_list :groups
SELECT g.id,g.name
FROM groups g
WHERE g.name IN (:groups)
ORDER BY g.name ASC
Isso deve fornecer o seguinte na interface do usuário:
Isso parece ótimo.
Já estou ansioso para colocar isso em prática. ![]()
Meu tópico foi fechado antes que eu pudesse responder a ele…
Existe uma maneira de limitar o novo tipo de parâmetro -- group_list a um único grupo? Eu o substituí em nossos relatórios existentes, mas todos eles foram escritos esperando um nome de grupo único e, em testes, descobri que eu o errava com bastante frequência.
Eu reabri e deslizei. ![]()
Embora eu não tenha certeza do que você quer dizer? Você pode dar um exemplo de qual é o problema?
Quero dizer que executo a consulta para o meu primeiro grupo. Então, quando quero trocar de grupo, adiciono um grupo em vez disso → erro
Oooh. Essa é interessante. Eu tenho usado mais como:
WHERE g.name IN (:groups)
WHERE g.id IN (:groups)
Embora isso ainda permita que você coloque acidentalmente mais de um, mesmo que evite o erro. ![]()
Prefiro ter o erro do que uma seleção aleatória da lista ![]()
Para ser honesto, acabei de verificar isso e acho que devo ter sonhado em usá-lo para group_ids, pois ele não gosta nada disso. Vou riscar isso do registro.
Não faço ideia de onde tirei essa ideia. Eu poderia jurar que o usei outro dia. ![]()
Aliás, esqueci completamente de dizer:
Isto é fabuloso!!!
Obrigado!!! ![]()
Não, não há como limitar a um único grupo. Pelo menos que eu saiba.
O parâmetro de group_list será um array se houver mais de 1 item selecionado e uma string se apenas 1 item for selecionado.
Portanto, quando há apenas um item, você pode fazer isso:
-- [params]
-- group_list :groups
SELECT g.id,g.name
FROM groups g
WHERE g.name = :groups
ORDER BY g.name ASC
Mas como é um array, o abaixo funcionará tanto para um único item quanto para múltiplos:
-- [params]
-- group_list :groups
SELECT g.id,g.name
FROM groups g
WHERE g.name IN (:groups)
ORDER BY g.name ASC
Mas não há como dizer à UI “aceite apenas 1 item como seleção”.
A documentação de @saradev aqui Utilizing Parameters in Data Explorer Queries destaca a lista completa de parâmetros para o Data Explorer que às vezes têm um menu suspenso e às vezes não. (Lista de parâmetros no Github)
Aqui está uma tabela de parâmetros, indicando também se há um controle específico para ele.
| parâmetro | menu suspenso disponível |
|---|---|
| int | |
| bigint | |
| boolean | |
| null boolean | |
| string | |
| date | |
| time | |
| datetime | |
| double | |
| user_id | |
| post_id | |
| topic_id | |
| string_list | |
| category_id | |
| group_id | |
| int_list | |
| string_list | |
| user_list | |
| group_list |
Idealmente, os menus suspensos usados e exibidos no Data Explorer teriam uma aparência semelhante à do aplicativo principal. Vamos descobrir como podemos fazer isso.
Redesenhamos recentemente toda a caixa de entrada de parâmetros. A maioria dos tipos tem suas próprias caixas suspensas e agora suporta validação com prompts de erro semânticos. ![]()
Aqui está a tabela mais recente de parâmetros indicando se há um controle específico para ele.
| parâmetro | dropdown disponível |
|---|---|
| int | |
| bigint | |
| boolean | |
| null boolean | |
| string | |
| date | |
| time | |
| datetime | |
| double | |
| user_id | |
| post_id | |
| topic_id | |
| category_id | |
| group_id | |
| int_list | |
| string_list | |
| user_list | |
| group_list |
@ganncamp Você pode querer saber sobre essa mudança ![]()
Você pode explicar como esses menus suspensos funcionam? Por mais que eu tente, não consegui fazer um menu suspenso onde eu possa definir uma lista de strings disponíveis nesse menu suspenso.
@jordan-violet uma resposta tardia, mas @SaraDev fez um artigo aqui sobre os parâmetros disponíveis, e o OP foi atualizado por Linca: