Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Retorno de LoadComposite Boa tarde Amigos! Estou necessitando novamente da preciosa ajuda dos praceiros do forum, tenho a seguinte situação: 1 - Uma tabela Cliente; 2 - Uma tabela Contato Onde em contato tenho a seguinte estrutura: `contato`.`id`, `contato`.`nome`, `contato`.`departamento_id`, `contato`.`cliente_id` Minha idéia é listar todos os contatos para um determinad...
PC
Retorno de LoadComposite  
Boa tarde Amigos!

Estou necessitando novamente da preciosa ajuda dos praceiros do forum, tenho a seguinte situação:
1 - Uma tabela Cliente;
2 - Uma tabela Contato

Onde em contato tenho a seguinte estrutura:
`contato`.`id`, `contato`.`nome`, `contato`.`departamento_id`, `contato`.`cliente_id`


Minha idéia é listar todos os contatos para um determinado cliente com o código abaixo
<php

// Criado por mim:

public function get_contato()
{
if(empty($this->contato))
{
$this->contato = new Contato($this->cliente_id);
}
return $this->contato;
}

// Criado pelo Adianti:

public function getcontatos()
{
return $this->contatos;
}

public function load($id)
{
$this->contatos = parent::loadAggregate('Contato', 'clientecontato', 'cliente_id', 'contato_id', $id);
$this->contatos = parent::loadComposite('Contato', 'cliente_id', $id);

// load the object itself
return parent::load($id);
}


// Minha consulta:

class ConsultaCliente extends TPage
{
public function __construct()
{
parent::__construct();

try
{
TTransaction::open('saf');

$cli = new Cliente(29);

print $cli->nome;
echo $cli->contato->nome;

foreach($this->contatos as $contato)
{
print $contato->nome . '
';
}

TTransaction::close();
}
catch(Exception $e)
{
new TMessage('info', $e->getMessage());
}
}
}

?>

Em nenhuma situação consigo listar os contatos e obtenho o erro abaixo:

// Erro apresentado:

[Tue Jan 23 12:37:23.797593 2018] [:error] [pid 7192:tid 1244] [client ::1:14258] PHP Notice: Undefined property: Cliente::$contato in C:\Bitnami\wamp\apache2\htdocs\saf\app\model\clientes\Cliente.class.php on line 35, referer: localhost/saf/index.php?class=ConsultaCliente
[Tue Jan 23 12:37:23.798098 2018] [:error] [pid 7192:tid 1244] [client ::1:14258] PHP Notice: Trying to get property of non-object in C:\Bitnami\wamp\apache2\htdocs\saf\app\control\clientes\ConsultaCliente.class.php on line 15, referer: localhost/saf/index.php?class=ConsultaCliente
[Tue Jan 23 12:37:23.798593 2018] [:error] [pid 7192:tid 1244] [client ::1:14258] PHP Warning: Invalid argument supplied for foreach() in C:\Bitnami\wamp\apache2\htdocs\saf\app\control\clientes\ConsultaCliente.class.php on line 17, referer: localhost/saf/index.php?class=ConsultaCliente


Conteúdo da tabela contato
id nome departamento_id cliente_id 1 Tânia Souza 2 29 2 Tatiane Rosa 2 29


Agradeço pela sempre preciosa ajuda.

Abs.

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (1)


NR

O foreach deve ser na variável $cli e não $this:
  1. <?php
  2. $cli = new Cliente(29); 
  3. print $cli->nome
  4. //foreach($this->contatos as $contato) 
  5. foreach($cli->contatos as $contato
  6.      print $contato->nome ' '
  7. ?>

Além disso não vejo muito sentido em ter uma função get_contato retornando somente 1 contato quando o relacionamento permite N.
E, dentro de get_contatos, tratando-se de composição a função loadAggregate não deve ser chamada, pode deixar somente a loadComposite