#5925·voyager

No data in relation ( select-dropdown )

Author: DanielGomeXCreated Nov 4, 2024Updated Nov 4, 2024
Labelspossible bug
### Laravel version 8.83.27 ### PHP version 8.0.13 ### Voyager version 1.7 ### Database MySQL 5.7 ### Description Descrição do Problema: Ao configurar um campo do tipo select-dropdown em um relacionamento para exibir o nome de um cliente e salvar apenas o ID correspondente, o Voyager não exibe corretamente as opções e apresenta inconsistências. O dropdown inicia a listagem a partir do último registro e não do primeiro, o que resulta em uma exibição desordenada e causa erros de seleção para o usuário final. Passos para Reproduzir o Erro: Configure um relacionamento no Voyager entre uma tabela principal e uma tabela de clientes, onde: O campo cliente_id armazena o ID do cliente na tabela principal. O label do relacionamento é configurado para exibir o nome do cliente. Acesse o campo de relacionamento no formulário de edição de registros. Verifique que as opções do dropdown começam a contar a partir do último registro, em vez de começar pelo primeiro registro, como seria o esperado. Comportamento Esperado: O dropdown deve exibir a lista de clientes em ordem correta, começando pelo primeiro registro, para que o usuário possa visualizar os nomes dos clientes e selecionar corretamente. Após a seleção, o Voyager deve salvar apenas o ID do cliente. Comportamento Observado: A lista de clientes começa a partir do último registro na tabela, e as chaves das opções estão incorretamente sincronizadas com o índice de cada item. Informações Adicionais: Versão do Voyager: 1.7 Versão do Laravel: 8.83 Versão do MySQL: 5.7 / 8.0 Navegador: Chrome / Firefox Sistema Operacional: [informe o SO utilizado, se relevante] Código Relacionado (Select Dropdown no Blade): blade @if(isset($options->relationship)) @if( !method_exists( $dataType->model_name, \Illuminate\Support\Str::camel($row->field) ) )

{{ __('voyager::form.field_select_dd_relationship', ['method' => \Illuminate\Support\Str::camel($row->field).'()', 'class' => $dataType->model_name]) }}

@endif @if( method_exists( $dataType->model_name, \Illuminate\Support\Str::camel($row->field) ) ) field, $dataTypeContent->{$row->field}); ?> default) && !isset($dataTypeContent->{$row->field})) ? $options->default : null; ?> @if(isset($options->options)) options); ?> @foreach($optionsList as $chave => $option) @endforeach @endif @else ![Captura de tela 2024-11-04 103250](https://github.com/user-attachments/assets/db3d9f07-3028-4465-82db-45c8a0f05d89) @endif @else @endif Possível Causa Suspeita: Parece que a função array_values ou a estrutura de foreach no Blade não está reindexando corretamente as chaves do array, o que resulta em uma listagem incorreta no dropdown. Solução ou Sugestão de Correção: Realinhar as chaves do array $optionsList ou ajustar o método de obtenção das opções de relacionamento para que inicie corretamente pelo primeiro registro. Outra possibilidade é verificar o método de ordenação no backend que fornece os dados para o campo de relacionamento. ### Steps to reproduce ![Captura de tela 2024-11-04 111328](https://github.com/user-attachments/assets/31829e03-bf16-4f57-91fc-2bb6a0b39492) ### Expected behavior ![Captura de tela 2024-11-04 111442](https://github.com/user-attachments/assets/6778a3dc-5cdf-4f22-94c1-f75bbf37e74a) ### Screenshots ![Captura de tela 2024-11-04 103250](https://github.com/user-attachments/assets/834db195-42d0-4a1e-bdb3-7830185299b2) ![Captura de tela 2024-11-04 103250_2](https://github.com/user-attachments/assets/fecd7343-87a6-4666-80d8-1815d992baa2) ### Additional context _No response_