Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Como tratar atributos como UF, onde a chave seria um char? Olá, Como tratar campos onde o usuário não informaria o ID mas um código, um exemplo seria um campo do tipo UF. O usuário conhece por convenção as siglas dos estados. Neste caso como trataria isso nos relacionamentos do TRecord e de que forma apresentaria isso ao usuário em um componente de tela. Valeu. Carlos H. Marian...
CM
Como tratar atributos como UF, onde a chave seria um char?  
Fechado
Olá,
Como tratar campos onde o usuário não informaria o ID mas um código, um exemplo seria um campo do tipo UF. O usuário conhece por convenção as siglas dos estados. Neste caso como trataria isso nos relacionamentos do TRecord e de que forma apresentaria isso ao usuário em um componente de tela.

Valeu.
Carlos H. Marian

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 (6)


FC

O conceito é o mesmo.

const TABLENAME = 'estados';
const PRIMARYKEY= 'uf';
// const IDPOLICY = 'max'; // {max, serial}

Quando é char eu não uso o IDPOLICY o resto é identico.
GF

Carlos Marian, lamento, mas não é assim que funciona o Framework. Você pode até fazer o que o Felipe favor, mas vai precisar sobrescrever alguns métodos da classe TRecord. Só te digo uma coisa, leia sobre padrão de projeto Identity Field, pois é esse design pattern que o framework utiliza.
Abraço!
PD

não sria mais viavel deixar o id para usar se nescessario, e criar um campo uf usando unique key no caso do mysql
FC

eu e minhas gambiarras rsrs
PD

Como o Alexandre (Progs) e o Guilherme falaram, é uma boa prática sempre ter um ID incremental, e ter este outro atributo como unique index. Outro exemplo seria o CPF, o CPF é um atributo como qualquer outro, mas um unique index, jamais um primary key. Conceitualmente um PK não deveria ser um atributo com significado no mundo real, sobre o qual não temos controle ;-) É isso que nos diz Fowler.

Abraços!
RS

https://www.youtube.com/watch?v=ccnKCrhB1io&t=320s
Criando um cadastro no Adianti Framework

Não consigo decifrar este avisos e erros:
Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'AdiantiWidgetBaseTElement' does not have a method 'addItens' in C:wamp64wwwStudioAulalibadiantiwidgetformTField.php on line 101

Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'AdiantiWidgetBaseTElement' does not have a method 'addItens' in C:wamp64wwwStudioAulalibadiantiwidgetformTField.php on line 101

Notice: Undefined variable: _lcto in C:wamp64wwwStudioAulaappcontrolFilmeForm.class.php on line 32

Fatal error: Uncaught TypeError: Argument 2 passed to AdiantiWidgetWrapperTQuickForm::addQuickField() must implement interface AdiantiWidgetFormAdiantiWidgetInterface, null given, called in C:wamp64wwwStudioAulaappcontrolFilmeForm.class.php on line 32 and defined in C:wamp64wwwStudioAulalibadiantiwidgetwrapperTQuickForm.php:167 Stack trace: #0 C:wamp64wwwStudioAulaappcontrolFilmeForm.class.php(32): AdiantiWidgetWrapperTQuickForm->addQuickField('Lancamento', NULL, 100) #1 C:wamp64wwwStudioAulalibadianticoreAdiantiCoreApplication.php(60): FilmeForm->__construct(Array) #2 C:wamp64wwwStudioAulaengine.php(14): AdiantiCoreAdiantiCoreApplication::run(true) #3 C:wamp64wwwStudioAulaengine.php(19): TApplication::run(true) #4 {main} thrown in C:wamp64wwwStudioAulalibadiantiwidgetwrapperTQuickForm.php on line 167

Como resolver este erro:
O código copiado da aula no link acima.

Parse error: parse error, expecting `T_VARIABLE' in C:wamp64wwwStudioAulaappmodelFilme.class.php on line 8
Errors parsing C:wamp64wwwStudioAulaappmodelFilme.class.php

  1. <?php
  2. class Filme extends TRecord
  3. {
  4.   const TABLENAME 'filme';
  5.    const PRIMARYKEY 'id';
  6.     const IDPOLICY 'max';
  7.    
  8. linha 8  public __construct($id NULL)
  9.  {
  10.  parent::__construct($id);
  11.  
  12.   parent::addAttribute('titulo');
  13.    parent::addAttribute('diretor');
  14.     parent::addAttribute('id_suporte');
  15.      parent::addAttribute('id_genero');
  16.       parent::addAttribute('dt_lcto');
  17.        parent::addAttribute('duracao');
  18.  } 
  19. }
  20. ?>


Fico no aguardo de quem posa me ajudar, pois, minha experiencia com o adianti pro é pouca pois acabei de adquirir.
  1. <?php
  2. class Filme extends TRecord
  3. {
  4.   const TABLENAME 'filme';
  5.    const PRIMARYKEY 'id';
  6.     const IDPOLICY 'max';
  7.    
  8.  public __construct($id NULL)
  9.  {
  10.  parent::__construct($id);
  11.  
  12.   parent::addAttribute('titulo');
  13.    parent::addAttribute('diretor');
  14.     parent::addAttribute('id_suporte');
  15.      parent::addAttribute('id_genero');
  16.       parent::addAttribute('dt_lcto');
  17.        parent::addAttribute('duracao');
  18.  } 
  19. }
  20. ?>

Vou ver se consigo entender com a ajuda do livro. Mais aguardo que eu possa obter ajuda aqui.