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:
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
Agradeço pela sempre preciosa ajuda.
Abs.
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.
O foreach deve ser na variável $cli e não $this:
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