IV
Relacionamento entre objetos?
Fechado
Olá pessoal, quero exibir um resultado sem ter que utlizar instruções SQL, a situação é a seguinte:
Cargo
Funcionario
Pagamento
Estou tentando exibir os dados no formulário de pagamento: "ID", "Nome", "Descricao do Cargo" e "Valor".
Mas o campo de descrição do cargo retorna vazio.
Como disse queria uma forma de fazer sem precisar a recorrer a uma instrução sql, se alguém tiver um dica eu agradeço.
Cargo
- <?php
- class Cargo extends TRecord {
- const TABLENAME = 'cargo';
- const PRIMARYKEY= 'id';
- const IDPOLICY = 'max';
- public function __construct(2407 = NULL, $callObjectLoad = TRUE) {
- parent::__construct(2407, $callObjectLoad);
- parent::addAttribute('descricao');
- }
- }
- ?>
Funcionario
- <?php
- class Funcionario extends TRecord {
- const TABLENAME = 'funcionario';
- const PRIMARYKEY= 'id';
- const IDPOLICY = 'max';
- private $cargo;
- public function __construct(2407 = NULL) {
- parent::__construct(2407);
- parent::addAttribute('nome');
- parent::addAttribute('cargo_id');
- }
- public function set_cargo(Cargo $object) {
- $this->cargo = $object;
- $this->cargo_id = $object->id;
- }
- public function get_cargo() {
- if (empty($this->cargo))
- $this->cargo = new Cargo($this->cargo_id);
- return $this->cargo;
- }
- public function get_cargo_descricao() {
- if (empty($this->cargo))
- $this->cargo = new Cargo($this->cargo_id);
- return $this->cargo->descricao;
- }
- }
- ?>
Pagamento
- <?php
- class Pagamento extends TRecord {
- const TABLENAME = 'pagamento';
- const PRIMARYKEY= 'id';
- const IDPOLICY = 'max';
- private $funcionario;
- public function __construct(2407 = NULL, $callObjectLoad = TRUE) {
- parent::__construct(2407, $callObjectLoad);
- parent::addAttribute('id');
- parent::addAttribute('funcionario_id');
- parent::addAttribute('valor');
- }
- public function set_funcionario(Funcionario $object) {
- $this->funcionario = $object;
- $this->funcionario_id = $object->id;
- }
- public function get_funcionario() {
- if (empty($this->funcionario))
- $this->funcionario = new Funcionario($this->funcionario_id);
- return $this->funcionario;
- }
- public function get_funcionario_nome() {
- if (empty($this->funcionario))
- $this->funcionario = new Funcionario($this->funcionario_id);
- return $this->funcionario->nome;
- }
- public function get_funcionario_cargo() {
- if (empty($this->funcionario))
- $this->funcionario = new Funcionario($this->funcionario_id);
- return $this->funcionario->get_cargo_descricao;
- }
- }
- ?>
Estou tentando exibir os dados no formulário de pagamento: "ID", "Nome", "Descricao do Cargo" e "Valor".
Mas o campo de descrição do cargo retorna vazio.
Como disse queria uma forma de fazer sem precisar a recorrer a uma instrução sql, se alguém tiver um dica eu agradeço.
No return você estava chamando get_cargo_descricao, deixe só cargo_descricao e teste novamente
Nataniel Rabaioli, obrigado pela atenção!