Tratar retorno vazios Ola, Estou tendo dificuldade em tratar retornos em que a coluna no banco é null ou ' ',. Como resolver. Trecho em que ocorre o erro ...
RB
Tratar retorno vazios  
Ola,

Estou tendo dificuldade em tratar retornos em que a coluna no banco é null ou ' ',.

Como resolver.

Trecho em que ocorre o erro
 
  1. <?php
  2. ....
  3. $email = new TDataGridColumn('cliente->fisica->contatoweb->email','E-mail','left');
  4. $site = new TDataGridColumn('cliente->fisica->contatoweb->site','Site','left');
  5. $email->setTransformer( function($value, $object, $row) {
  6. switch ($value) {
  7. case !empty($value):
  8. return $value;
  9. break;
  10. default:
  11. return '---';
  12. break;
  13. }
  14. });
  15. ?>

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (3)


IF

Rubens, acho que há algum problema no seu model, pela mensagem na tela, o Adianti não está encontrando a propriedade do objeto. Posta o seu model pra gente dar uma olhada
RB

Ivan, bom dia,

Segue
Pessoa

 
  1. <?php
  2. /**
  3. * Pessoa Active Record
  4. * @author <your-name-here>
  5. */
  6. class Pessoa extends TRecord
  7. {
  8. const TABLENAME = 'pessoa';
  9. const PRIMARYKEY= 'id';
  10. const IDPOLICY = 'serial'; // {max, serial}
  11. protected $contato;
  12. protected $contatoweb;
  13. /**
  14. * Constructor method
  15. */
  16. public function __construct($id = NULL, $callObjectLoad = TRUE)
  17. {
  18. parent::__construct($id, $callObjectLoad);
  19. parent::addAttribute('nome');
  20. parent::addAttribute('data_nascimento');
  21. parent::addAttribute('organizacao_id');
  22. parent::addAttribute('criacao');
  23. parent::addAttribute('atualizacao');
  24. parent::addAttribute('ativo');
  25. parent::addAttribute('tipo_pessoa_id');
  26. }
  27. public function get_contato()
  28. {
  29. // loads the associated object
  30. if (empty($this->contato))
  31. try
  32. {
  33. TTransaction::open('teste');
  34. $criteria = new TCriteria;
  35. $criteria->add( new TFilter( 'pessoa_id', '=', $this->id ));
  36. $contatos = Contato::getObjects($criteria);
  37. foreach ($contatos as $contato)
  38. {
  39. $this->contato = $contato;
  40. }
  41. TTransaction::close();
  42. }
  43. catch (Exception $e)
  44. {
  45. new TMessage('error', $e->getMessage());
  46. }
  47. // returns the associated object
  48. return $this->contato;
  49. }
  50. public function getContatoWeb()
  51. {
  52. $criteria = new TCriteria;
  53. $criteria->add(new TFilter('pessoa_id', '=', $this->id));
  54. $this->pessoa = ContatoWeb::getObjects( $criteria );
  55. return $this->pessoa;
  56. }
  57. }
  58. ?>


Fisica
 
  1. <?php
  2. /**
  3. * Fisica Active Record
  4. * @author <your-name-here>
  5. */
  6. class Fisica extends TRecord
  7. {
  8. const TABLENAME = 'fisica';
  9. const PRIMARYKEY= 'id';
  10. const IDPOLICY = 'serial'; // {max, serial}
  11. private $pessoa;
  12. private $civil;
  13. private $etnia;
  14. private $cliente;
  15. private $contato;
  16. private $contatoweb;
  17. /**
  18. * Constructor method
  19. */
  20. public function __construct($id = NULL, $callObjectLoad = TRUE)
  21. {
  22. parent::__construct($id, $callObjectLoad);
  23. parent::addAttribute('pessoa_id');
  24. parent::addAttribute('cpf');
  25. parent::addAttribute('rg');
  26. parent::addAttribute('genero_id');
  27. parent::addAttribute('civil_id');
  28. parent::addAttribute('cnh');
  29. parent::addAttribute('criacao');
  30. parent::addAttribute('atualizacao');
  31. parent::addAttribute('organizacao_id');
  32. parent::addAttribute('etnia_id');
  33. }
  34. /**
  35. * Method set_pessoa
  36. * Sample of usage: $fisica->pessoa = $object;
  37. * @param $object Instance of Pessoa
  38. */
  39. public function set_pessoa(Pessoa $object)
  40. {
  41. $this->pessoa = $object;
  42. $this->pessoa_id = $object->id;
  43. }
  44. /**
  45. * Method get_pessoa
  46. * Sample of usage: $fisica->pessoa->attribute;
  47. * @returns Pessoa instance
  48. */
  49. public function get_pessoa()
  50. {
  51. // loads the associated object
  52. if (empty($this->pessoa))
  53. $this->pessoa = new Pessoa($this->pessoa_id);
  54. // returns the associated object
  55. return $this->pessoa;
  56. }
  57. /**
  58. * Method set_civil
  59. * Sample of usage: $fisica->civil = $object;
  60. * @param $object Instance of Civil
  61. */
  62. public function set_civil(Civil $object)
  63. {
  64. $this->civil = $object;
  65. $this->civil_id = $object->id;
  66. }
  67. /**
  68. * Method get_civil
  69. * Sample of usage: $fisica->civil->attribute;
  70. * @returns Civil instance
  71. */
  72. public function get_civil()
  73. {
  74. // loads the associated object
  75. if (empty($this->civil))
  76. $this->civil = new Civil($this->civil_id);
  77. // returns the associated object
  78. return $this->civil;
  79. }
  80. /**
  81. * Method set_etnia
  82. * Sample of usage: $fisica->etnia = $object;
  83. * @param $object Instance of Etnia
  84. */
  85. public function set_etnia(Etnia $object)
  86. {
  87. $this->etnia = $object;
  88. $this->etnia_id = $object->id;
  89. }
  90. /**
  91. * Method get_etnia
  92. * Sample of usage: $fisica->etnia->attribute;
  93. * @returns Etnia instance
  94. */
  95. public function get_etnia()
  96. {
  97. // loads the associated object
  98. if (empty($this->etnia))
  99. $this->etnia = new Etnia($this->etnia_id);
  100. // returns the associated object
  101. return $this->etnia;
  102. }
  103. /**
  104. * Method get_cliente
  105. * Sample of usage: $fisica->cliente->attribute;
  106. * @returns Cliente instance
  107. */
  108. public function get_cliente()
  109. {
  110. // loads the associated object
  111. if (empty($this->cliente))
  112. $this->cliente = new Cliente($this->pessoa_id);
  113. // returns the associated object
  114. return $this->cliente;
  115. }
  116. /**
  117. * Method get_contato
  118. * Sample of usage: $fisica->contato->attribute;
  119. * @returns Contato instance
  120. */
  121. public function get_contato()
  122. {
  123. // loads the associated object
  124. if (empty($this->contato))
  125. try
  126. {
  127. TTransaction::open('teste');
  128. $criteria = new TCriteria;
  129. $criteria->add(new TFilter('pessoa_id', '=', $this->pessoa_id));
  130. $repository = new TRepository('Contato');
  131. $contatos = $repository->load($criteria);
  132. foreach ($contatos as $object)
  133. {
  134. $this->contato = $object;
  135. return $this->contato;
  136. }
  137. TTransaction::close();
  138. }
  139. catch (Exception $e)
  140. {
  141. new TMessage('error', $e->getMessage());
  142. }
  143. // returns the associated object
  144. return $this->contato;
  145. }
  146. public function getContatoWeb()
  147. {
  148. if (empty($this->contatoweb))
  149. {
  150. $criteria = new TCriteria;
  151. $criteria->add(new TFilter('pessoa_id', '=', $this->pessoa_id));
  152. $this->contatoweb = ContatoWeb::getObjects( $criteria );
  153. return $this->contatoweb;
  154. }
  155. }
  156. }
  157. ?>


ContatoWeb

 
  1. <?php
  2. /**
  3. * Contatoweb Active Record
  4. * @author <your-name-here>
  5. */
  6. class ContatoWeb extends TRecord
  7. {
  8. const TABLENAME = 'contatoweb';
  9. const PRIMARYKEY= 'id';
  10. const IDPOLICY = 'serial'; // {max, serial}
  11. private $pessoa;
  12. private $cliente;
  13. /**
  14. * Constructor method
  15. */
  16. public function __construct($id = NULL, $callObjectLoad = TRUE)
  17. {
  18. parent::__construct($id, $callObjectLoad);
  19. parent::addAttribute('pessoa_id');
  20. parent::addAttribute('email');
  21. parent::addAttribute('site');
  22. }
  23. /**
  24. * Method set_pessoa
  25. * Sample of usage: $contatoweb->pessoa = $object;
  26. * @param $object Instance of Pessoa
  27. */
  28. public function set_pessoa(Pessoa $object)
  29. {
  30. $this->pessoa = $object;
  31. $this->pessoa_id = $object->id;
  32. }
  33. /**
  34. * Method get_pessoa
  35. * Sample of usage: $contatoweb->pessoa->attribute;
  36. * @returns Pessoa instance
  37. */
  38. public function get_pessoa()
  39. {
  40. // loads the associated object
  41. if (empty($this->pessoa))
  42. $this->pessoa = new Pessoa($this->pessoa_id);
  43. // returns the associated object
  44. return $this->pessoa;
  45. }
  46. /**
  47. * Method get_cliente
  48. * Sample of usage: $contatoweb->cliente->attribute;
  49. * @returns Cliente instance
  50. */
  51. public function get_cliente()
  52. {
  53. // loads the associated object
  54. if (empty($this->cliente))
  55. $this->cliente = new Cliente($this->pessoa_id);
  56. // returns the associated object
  57. return $this->cliente;
  58. }
  59. }
  60. ?>


IF

Vc está tentando exibir um array contatoweb numa coluna DataGrid, porisso que está ocorrendo erro! E quando vc usa relacionamentos, a tabela principal (clientes) não pode entrar no nome do campo da datagrid. ex:
o correto é:
<php
$site = new TDataGridColumn('fisica->contatoweb->site','Site','left');
?>