ST
Relacionamento entre tabelas, limpar campo e inserir imagens
Amigos,
Sou iniciante no Adianti Framework e estou com algumas dificuldades tais como: fazer o relacionamento entre tabelas, gravar imagem no banco de dados e limpar o campo de pesquisa após realizar consulta.
Preciso que me ajudem nessa fase inicial.
Segue os modelos:
Sou iniciante no Adianti Framework e estou com algumas dificuldades tais como: fazer o relacionamento entre tabelas, gravar imagem no banco de dados e limpar o campo de pesquisa após realizar consulta.
Preciso que me ajudem nessa fase inicial.
Segue os modelos:
<?php/** * Perdcomp Active Record * @author <your-name-here> */class Perdcomp extends TRecord{ const TABLENAME = 'perdcomp'; const PRIMARYKEY= 'perdcomp_id'; const IDPOLICY = 'max'; // {max, serial} private $origem_documento; private $tipo_credito; private $tipo_documento; private $tipo_imposto; /** * Constructor method */ public function __construct($id = NULL, $callObjectLoad = TRUE) { parent::__construct($id, $callObjectLoad); parent::addAttribute('DataCriacao'); parent::addAttribute('DataTransmissao'); parent::addAttribute('Sequencial'); parent::addAttribute('Nr_PERDCOMP'); parent::addAttribute('TipoDocumento_id'); parent::addAttribute('OrigemDocumento_id'); parent::addAttribute('TipoCredito_id'); parent::addAttribute('SaldoDeclarado'); parent::addAttribute('Exercicio'); parent::addAttribute('TipoImposto_ID'); parent::addAttribute('ValorCompensado'); parent::addAttribute('Competencia'); parent::addAttribute('PERDCOMP_Original'); parent::addAttribute('Situacao'); parent::addAttribute('Coluna3'); parent::addAttribute('Cancelamento'); parent::addAttribute('CreditoOriginalInicial'); parent::addAttribute('CreditoOriginalUtilizadoCompensacoes'); parent::addAttribute('CreditoOriginalDisponivel'); parent::addAttribute('CreditoOriginalTransmissao'); parent::addAttribute('SelicAcumulada'); parent::addAttribute('CreditoAtualizado'); parent::addAttribute('DebitosDocumento'); parent::addAttribute('CreditoOriginalUtilizadoDocumento'); parent::addAttribute('SaldoCreditoOriginal'); parent::addAttribute('GED'); } /** * Method set_origem_documento * Sample of usage: $perdcomp->origem_documento = $object; * @param $object Instance of OrigemDocumento */ public function set_origem_documento(OrigemDocumento $object) { $this->origem_documento = $object; $this->origem_documento_id = $object->id; } /** * Method get_origem_documento * Sample of usage: $perdcomp->origem_documento->attribute; * @returns OrigemDocumento instance */ public function get_origem_documento() { // loads the associated object if (empty($this->origem_documento)) $this->origem_documento = new OrigemDocumento($this->origem_documento_id); // returns the associated object return $this->origem_documento; } /** * Method set_tipo_credito * Sample of usage: $perdcomp->tipo_credito = $object; * @param $object Instance of TipoCredito */ public function set_tipo_credito(TipoCredito $object) { $this->tipo_credito = $object; $this->tipo_credito_id = $object->id; } /** * Method get_tipo_credito * Sample of usage: $perdcomp->tipo_credito->attribute; * @returns TipoCredito instance */ public function get_tipo_credito() { // loads the associated object if (empty($this->tipo_credito)) $this->tipo_credito = new TipoCredito($this->tipo_credito_id); // returns the associated object return $this->tipo_credito->TipoCreditoDescricao; } /** * Method set_tipo_documento * Sample of usage: $perdcomp->tipo_documento = $object; * @param $object Instance of TipoDocumento */ public function set_tipo_documento(TipoDocumento $object) { $this->tipo_documento = $object; $this->tipo_documento_id = $object->id; } /** * Method get_tipo_documento * Sample of usage: $perdcomp->tipo_documento->attribute; * @returns TipoDocumento instance */ public function get_tipo_documento() { // loads the associated object if (empty($this->tipo_documento)) $this->tipo_documento = new TipoDocumento($this->tipo_documento_id); // returns the associated object return $this->tipo_documento->TipoDocumentoDescricao; } /** * Method set_tipo_imposto * Sample of usage: $perdcomp->tipo_imposto = $object; * @param $object Instance of TipoImposto */ public function set_tipo_imposto(TipoImposto $object) { $this->tipo_imposto = $object; $this->tipo_imposto_id = $object->id; } /** * Method get_tipo_imposto * Sample of usage: $perdcomp->tipo_imposto->attribute; * @returns TipoImposto instance */ public function get_tipo_imposto() { // loads the associated object if (empty($this->tipo_imposto)) $this->tipo_imposto = new TipoImposto($this->tipo_imposto_id); // returns the associated object return $this->tipo_imposto; } }
<?php/** * Tipodocumento Active Record * @author <your-name-here> */class TipoDocumento extends TRecord{ const TABLENAME = 'tipodocumento'; const PRIMARYKEY= 'TipoDocumento_id'; const IDPOLICY = 'max'; // {max, serial} /** * Constructor method */ public function __construct($id = NULL, $callObjectLoad = TRUE) { parent::__construct($id, $callObjectLoad); parent::addAttribute('TipoDocumentoDescricao'); }}
<?php/** * Tipocredito Active Record * @author <your-name-here> */class TipoCredito extends TRecord{ const TABLENAME = 'tipocredito'; const PRIMARYKEY= 'TipoCredito_id'; const IDPOLICY = 'max'; // {max, serial} /** * Constructor method */ public function __construct($id = NULL, $callObjectLoad = TRUE) { parent::__construct($id, $callObjectLoad); parent::addAttribute('TipoCreditoDescricao'); }}Segue os formulários:
<?php/** * PerdcompForm Registration * @author <your name here> */class PerdcompForm extends TPage{ protected $form; // form use Adianti\Base\AdiantiStandardFormTrait; // Standard form methods /** * Class constructor * Creates the page and the registration form */ function __construct() { parent::__construct(); $this->setDatabase('perdcomp'); // defines the database $this->setActiveRecord('Perdcomp'); // defines the active record // creates the form $this->form = new TQuickForm('form_Perdcomp'); $this->form->class = 'tform'; // change CSS class $this->form->style = 'display: table;width:100%'; // change style // define the form title $this->form->setFormTitle('Perdcomp'); // create the form fields $perdcomp_id = new TEntry('perdcomp_id'); $DataCriacao = new TDate('DataCriacao'); $DataTransmissao = new TDate('DataTransmissao'); $Sequencial = new TEntry('Sequencial'); $Nr_PERDCOMP = new TEntry('Nr_PERDCOMP'); $TipoDocumento_id = new
">TDBSeekButton('TipoDocumento_id', 'perdcomp', $this->form->getName(), 'TipoDocumento', 'TipoDocumentoDescricao', 'TipoDocumento_id', 'TipoDocumentoDescricao'); $TipodocumentoDescricao = new TEntry('TipoDocumentoDescricao'); $OrigemdoDocumento_id = new
">TDBSeekButton('OrigemDocumento_id', 'perdcomp', $this->form->getName(), 'OrigemDocumento', 'OrigemDocumentoDescricao', 'OrigemDocumento_id', 'OrigemDocumentoDescricao'); $OrigemDocumentoDescricao = new TEntry('OrigemDocumentoDescricao'); $TipoCredito_id = new
">TDBSeekButton('TipoCredito_id', 'perdcomp', $this->form->getName(), 'TipoCredito', 'TipoCreditoDescricao', 'TipoCredito_id', 'TipoCreditoDescricao'); $TipoCreditoDescricao = new TEntry('TipoCreditoDescricao'); $SaldoDeclarado = new TEntry('SaldoDeclarado'); $Exercicio = new TEntry('Exercicio');// $TipoImposto_ID = new TSeekButton('TipoImposto_ID'); $TipoImposto_id = new
">TDBSeekButton('TipoImposto_id', 'perdcomp', $this->form->getName(), 'TipoImposto', 'TipoImposto_Descricao', 'TipoImposto_id', 'TipoImposto_Descricao'); $TipoImpostoDescricao = new TEntry('TipoImpostoDescricao'); $ValorCompensado = new TEntry('ValorCompensado'); $Competencia = new TEntry('Competencia'); $PERDCOMP_Original = new TEntry('PERDCOMP_Original'); $Situacao = new TEntry('Situacao'); $Coluna3 = new TEntry('Coluna3'); $Cancelamento = new TEntry('Cancelamento'); $CreditoOriginalInicial = new TEntry('CreditoOriginalInicial'); $CreditoOriginalUtilizadoCompensacoes = new TEntry('CreditoOriginalUtilizadoCompensacoes'); $CreditoOriginalDisponivel = new TEntry('CreditoOriginalDisponivel'); $CreditoOriginalTransmissao = new TEntry('CreditoOriginalTransmissao'); $SelicAcumulada = new TEntry('SelicAcumulada'); $CreditoAtualizado = new TEntry('CreditoAtualizado'); $DebitosDocumento = new TEntry('DebitosDocumento'); $CreditoOriginalUtilizadoDocumento = new TEntry('CreditoOriginalUtilizadoDocumento'); $SaldoCreditoOriginal = new TEntry('SaldoCreditoOriginal'); $GED = new TFile('GED'); $TipoDocumentoDescricao->setEditable(FALSE); $TipoDocumento_id->setSize('40'); $TipoDocumentoDescricao->setSize('500'); $OrigemDocumentoDescricao->setEditable(FALSE); $OrigemdDcumento_id->setSize('40'); $OrigemDocumentoDescricao->setSize('500'); $TipoCreditoDescricao->setEditable(FALSE); $TipoCredito_id->setSize('40'); $TipoCreditoDescricao->setSize('500'); $TipoImpostoDescricao->setEditable(FALSE); $TipoImposto_id->setSize('40'); $TipoImpostoDescricao->setSize('500'); // add the fields $this->form->addQuickField('Código:', $perdcomp_id, 100 ); $this->form->addQuickField('Data Criação:', $DataCriacao, 100 ); $this->form->addQuickField('Data Transmissão:', $DataTransmissao, 100 ); $this->form->addQuickField('Sequencial:', $Sequencial, 200 ); $this->form->addQuickField('Nº Perdcomp:', $Nr_PERDCOMP, 200 ); $this->form->addQuickFields('Tipo Documento:', [ $TipoDocumento_id, $TipodocumentoDescricao ] ); $this->form->addQuickFields('Origem Documento:', [ $OrigemDocumento_id, $OrigemDocumentoDescricao ] ); $this->form->addQuickFields('Tipo Crédito:', [ $TipoCredito_id, $TipoCreditoDescricao] ); $this->form->addQuickField('Saldo Declarado:', $SaldoDeclarado, 150 ); $this->form->addQuickField('Exercicio:', $Exercicio, 100 ); $this->form->addQuickFields('Tipo Imposto:', [ $TipoImposto_id, $TipoImpostoDescricao] ); $this->form->addQuickField('Valor Compensado:', $ValorCompensado, 150 ); $this->form->addQuickField('Competência:', $Competencia, 100 ); $this->form->addQuickField('Perdcomp Original:', $PERDCOMP_Original, 200 ); $this->form->addQuickField('Situação:', $Situacao, 200 ); $this->form->addQuickField('Coluna3:', $Coluna3, 200 ); $this->form->addQuickField('Cancelamento:', $Cancelamento, 200 ); $this->form->addQuickField('Crédito Original Inicial:', $CreditoOriginalInicial, 150 ); $this->form->addQuickField('Crédito Original Utilizado Compensações:', $CreditoOriginalUtilizadoCompensacoes, 150 ); $this->form->addQuickField('Crédito Original Disponível:', $CreditoOriginalDisponivel, 150 ); $this->form->addQuickField('Crédito Original Transmissão:', $CreditoOriginalTransmissao, 150 ); $this->form->addQuickField('Selic Acumulada:', $SelicAcumulada, 150 ); $this->form->addQuickField('Crédito Atualizado:', $CreditoAtualizado, 150 ); $this->form->addQuickField('Débitos Documento:', $DebitosDocumento, 150 ); $this->form->addQuickField('Crédito Original Utilizado Documento:', $CreditoOriginalUtilizadoDocumento, 150, new TRequiredValidator ); $this->form->addQuickField('Saldo Crédito Original:', $SaldoCreditoOriginal, 150 , new TRequiredValidator); $this->form->addQuickField('Ged:', $GED, 500 ); if (!empty($perdcomp_id)) { $perdcomp_id->setEditable(FALSE); } /** samples $this->form->addQuickFields('Date', array($date1, new TLabel('to'), $date2)); // side by side fields $fieldX->addValidation( 'Field X', new TRequiredValidator ); // add validation $fieldX->setSize( 100, 40 ); // set size **/ // create the form actions $this->form->addQuickAction(_t('Save'), new TAction(array($this, 'onSave')), 'fa:floppy-o'); $this->form->addQuickAction(_t('New'), new TAction(array($this, 'onEdit')), 'bs:plus-sign green'); $this->form->addQuickAction(_t('Back to the listing'), new TAction(array('PerdcompList', 'onReload')), 'fa:table blue'); // vertical box container $container = new TVBox; $container->style = 'width: 90%'; // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__)); $container->add($this->form); parent::add($container); }}
Veja abaixo um trecho do código com relacionamento
Neste trecho o atributo na tabela deve ser o mesmo nome do atributo do relacionamento: $this->cliente = new Cliente($this->cliente_id);
$this->cliente_id = refere-se ao atributo "cliente_id" da tabela relacionada
Neste trecho, fazemos referência ao $object->id qe é "clientes", com $this->cliente_id da tabela relacionada :$this->cliente_id = $object->id;
O atributo da tabela relacionada está com o mesmo nome?
<php
/**
* Method set_cliente
* Sample of usage: $backlog->cliente = $object;
* @param $object Instance of Cliente
*/
public function set_cliente(Cliente $object)
{
$this->cliente = $object;
$this->cliente_id = $object->id;
}
/**
* Method get_cliente
* Sample of usage: $backlog->cliente->attribute;
* @returns Cliente instance
*/
public function get_cliente()
{
// loads the associated object
if (empty($this->cliente))
$this->cliente = new Cliente($this->cliente_id);
// returns the associated object
return $this->cliente;
}
>
Respondendo as demais perguntas:
Limpar campos = normalmente ao inserir um registro, ou mantemos o registro na tela com o ID gerado para edição, ou redirecionamos para um lista. Se deseja voltar a tela como novo registro, ao salvar vc pode simplesmente não utilizar: $this->form->setData($dados);
Imgens: vc diz fazer upload?
Problema resolvido.
Muito obrigado Marcelo.