John Hebert Trindade Posted December 3, 2023 at 05:46 PM Report Share #632294 Posted December 3, 2023 at 05:46 PM Boa tarde, Tenho uma model editar, nesta model recupero o resultado do banco de dados. public function viewTecnico(int $id): void { $this->id = $id; $viewTecnico = new \App\adms\helpers\AdmsRead(); $viewTecnico->fullRead( "SELECT id, adms_genero_id, adms_estado_civil_id, name, morada, localidade, codigo_postal, adms_distrito_id, adms_concelho_id, adms_freguesia_id, name_pai, name_mae, adms_tipo_doc_id, numero_doc, adms_arquivo_id, data_emissao, data_validade, data_nasc, nif_pais, numero_nif, beneficiario1, beneficiario2, beneficiario3, telefone1, telefone2, telemovel, email, observacoes FROM adms_tecnicos WHERE id=:id LIMIT :limit", "id={$this->id}&limit=1" ); $this->resultBd = $viewTecnico->getResult(); <------ VALOR DEVOLVIDO AQUI if ($this->resultBd) { $this->result = true; } else { $this->utils->setSessionMsg('Erro: Técnico Funerário não encontrado!', 'danger'); //$_SESSION['msg'] = "<p class='alert-danger'>Erro: Usuário não encontrado!</p>"; $this->result = false; } } Depois tenho um outra função que deverá usar parte desta pesquisa para realizar outra pesquisa public function listSelectConcelho(): array { $list = new \App\adms\helpers\AdmsRead(); $list->fullRead( "SELECT id id_conc, name_concelho FROM adms_concelhos WHERE adms_distrito_id=:adms_distrito_id ORDER BY name_concelho ASC", <----- AQUI COLOCO O $THIS->RESULTBD na posíção 0 com o valor a recuperar "adms_distrito_id= {$this->resultBd[0]['adms_distrito_id']} " ); $registry['conc'] = $list->getResult(); $this->listRegistryAdd = ['conc' => $registry['conc']]; return $this->listRegistryAdd; } Na primeira pesquisa é devolvido o seguinte array no var_dump $this->resultBd: Array ( [0] => Array ( [id] => 1 [adms_genero_id] => 1 [adms_estado_civil_id] => 5 [name] => José da Silva [adms_distrito_id] => 1 [adms_concelho_id] => 3 [adms_freguesia_id] => 2 [adms_arquivo_id] => 3 [data_emissao] => 2023-08-20 00:00:00 [data_validade] => 2026-08-20 00:00:00 [beneficiario2] => [beneficiario3] => [observacoes] => ) ) Mas recebo os seguinte erros: Fatal error: Uncaught Error: Typed property App\adms\Models\tecnico_funerario\AdmsEdit::$resultBd must not be accessed before initialization in /Applications/XAMPP/xamppfiles/htdocs/adm/app/adms/Models/tecnico_funerario/AdmsEdit.php on line 209 Error: Typed property App\adms\Models\tecnico_funerario\AdmsEdit::$resultBd must not be accessed before initialization in /Applications/XAMPP/xamppfiles/htdocs/adm/app/adms/Models/tecnico_funerario/AdmsEdit.php on line 209 O que estou fazendo de errado? Link to comment Share on other sites More sharing options...
Ivo Vicente Posted December 3, 2023 at 10:07 PM Report Share #632295 Posted December 3, 2023 at 10:07 PM (edited) Olá, É possivel ver o ficheiro AdmsEdit.php ou a linha 209 para termos mais detalhes? O metodo construtor em AdmsEdit.php não recebe nenhuma variavel? O mais provavel teres alguma propriedade a null ou que devia ser definida no construtor ou inicializada com um valor dentro do AdmsEdit.php Edited December 3, 2023 at 10:10 PM by Ivo Vicente Feito é melhor que perfeito Link to comment Share on other sites More sharing options...
John Hebert Trindade Posted December 5, 2023 at 12:09 PM Author Report Share #632318 Posted December 5, 2023 at 12:09 PM Olá @Ivo Vicente agradeço imenso mas irei retirar o post, porque foi um erro meu e já vi o que fiz errado, após você ler diga algo para remover. Mas agradeço imenso. Link to comment Share on other sites More sharing options...
Ivo Vicente Posted December 5, 2023 at 02:43 PM Report Share #632321 Posted December 5, 2023 at 02:43 PM Não precisas de remover, é mais útil partilhar a solução para o caso de acontecer a outro utilizador. Feito é melhor que perfeito Link to comment Share on other sites More sharing options...
Solution John Hebert Trindade Posted December 5, 2023 at 05:25 PM Author Solution Report Share #632324 Posted December 5, 2023 at 05:25 PM O sistema tinha toda a razão em dizer que eu não poderia usar antes de a inicializar. Porque na função anterior eu chamava sem enviar dados nenhum. Antes eu coloquei assim: private function viewEditTecnico(): void { $this->data['sidebarActive'] = "list-tecnicos"; $listSelect = new \App\adms\Models\tecnico_funerario\AdmsEdit(); $this->data['genero'] = $listSelect->listSelectGenero(); $this->data['distrito'] = $listSelect->listSelectDistrito(NÃO ENVIEI O VALOR); $this->data['concelho'] = $listSelect->listSelectConcelho(NÃO ENVIEI O VALOR); $this->data['freguesia'] = $listSelect->listSelectFreguesia(NÃO ENVIEI O VALOR); $loadView = new \Core\ConfigView("adms/Views/tecnico_funerario/edit", $this->data); $loadView->loadView(); } E o correcto é: private function viewEditTecnico(): void { $this->data['sidebarActive'] = "list-tecnicos"; $listSelect = new \App\adms\Models\tecnico_funerario\AdmsEdit(); $this->data['genero'] = $listSelect->listSelectGenero(); $this->data['distrito'] = $listSelect->listSelectDistrito(); $this->data['concelho'] = $listSelect->listSelectConcelho($this->data['form'][0]['adms_distrito_id']); $this->data['freguesia'] = $listSelect->listSelectFreguesia($this->data['form'][0]['adms_concelho_id']); $loadView = new \Core\ConfigView("adms/Views/tecnico_funerario/edit", $this->data); $loadView->loadView(); } assim já não deu o erro e as funções acima funcionaram Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now