ST
Relacionamento entre tabelas
Boa tarde,
Por favor, como fazer o relacionamento entre duas tabelas.
Por exemplo: buscar a cidade do cliente em outra tabela cidade,
Segue, anexo, imagem do fornulário.
Veja o código que estou utilizando:
Por favor, como fazer o relacionamento entre duas tabelas.
Por exemplo: buscar a cidade do cliente em outra tabela cidade,
Segue, anexo, imagem do fornulário.
Veja o código que estou utilizando:
<?php/** * BookList Listing * * @version 1.0 * @package samples * @subpackage library * @author Pablo Dall'Oglio * @copyright Copyright (c) 2006-2011 Adianti Solutions Ltd. (http://www.adianti.com.br) * @license http://www.adianti.com.br/framework-license */class ClienteList extends TStandardList{ protected $form; // registration form protected $datagrid; // listing protected $pageNavigation; protected $loaded; /** * Class constructor * Creates the page, the form and the listing */ public function __construct() { parent::__construct(); // defines the database parent::setDatabase('teste'); // defines the active record parent::setActiveRecord('cliente'); // defines the filter field parent::addFilterField('cliente_id', 'like', 'cliente_id'); parent::addFilterField('nomecliente', '=', 'nomecliente'); parent::addFilterField('cidade_id', '=', 'cidade_id'); // creates the form $this->form = new BootstrapFormBuilder('form_search_Cliente'); $this->form->setFormTitle(''); // create the form fields $cliente_id = new TEntry('cliente_id'); $title = new TEntry('nomecliente'); $cidade_id = new
">TDBSeekButton('cidade_id', 'teste', $this->form->getName(), 'Cidade', 'nomecidade', 'cidade_id', 'nomecidade'); $nomecidade = new TEntry('cidades->nomecidade'); $nomecidade->setEditable(FALSE); $cliente_id->setSize('10%'); $title->setSize('100%'); $cidade_id->setSize('10%'); $nomecidade->setSize('80%'); $this->form->addFields( [ new TLabel(_t('Code')) ], [ $cliente_id ] ); $this->form->addFields( [ new TLabel(_t('Name')) ], [ $title ] ); $this->form->addFields( [ new TLabel(_t('City')) ], [ $cidade_id, $nomecidade ] ); $this->form->addAction(_t('Find'), new TAction(array($this, 'onSearch')), 'fa:search'); $this->form->addAction(_t('New'), new TAction(array('ClienteForm', 'onClear')), 'fa:plus-square green'); $this->form->setData(TSession::getValue('Book_filter_data')); // creates a DataGrid $this->datagrid = new BootstrapDatagridWrapper(new TDataGrid); $this->datagrid->style = 'width: 100%'; $this->datagrid->datatable = 'true'; // creates the datagrid columns $id = new TDataGridColumn('cliente_id','Código', 'right', 100); $title = new TDataGridColumn('nomecliente','Nome', 'left',200 ); $nomecidade = new TDataGridColumn('nomecidade','Cidade','left', 190); // creates the datagrid actions $order1 = new TAction(array($this, 'onReload')); $order2 = new TAction(array($this, 'onReload')); // define the ordering parameters $order1->setParameter('order', 'cliente_id'); $order2->setParameter('order', 'nomecliente'); // assign the ordering actions $id->setAction($order1); $title->setAction($order2); // add the columns to the DataGrid $this->datagrid->addColumn($id); $this->datagrid->addColumn($title); $this->datagrid->addColumn($nomecidade); // creates two datagrid actions $action1 = new TDataGridAction(array('ClienteForm', 'onEdit')); $action1->setLabel(_t('Edit')); $action1->setImage('fa:pencil-square-o blue fa-lg'); $action1->setField('cliente_id'); $action2 = new TDataGridAction(array($this, 'onDelete')); $action2->setLabel(_t('Delete')); $action2->setImage('fa:trash-o red fa-lg'); $action2->setField('cliente_id'); // add the actions to the datagrid $this->datagrid->addAction($action1); $this->datagrid->addAction($action2); // create the datagrid model $this->datagrid->createModel(); // creates the page navigation $this->pageNavigation = new TPageNavigation; $this->pageNavigation->setAction(new TAction(array($this, 'onReload'))); $this->pageNavigation->setWidth($this->datagrid->getWidth()); // creates the page structure using a vbox $container = new TVBox; $container->style = 'width: 100%'; $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__)); $container->add($this->form); $container->add(TPanelGroup::pack('', $this->datagrid)); $container->add($this->pageNavigation); // add the vbox inside the page parent::add($container); }}
O relacionamento é feito no "model".
Vc usa o Adianti Pró?
Através dele, vc faz o relacionando no Model Cliente, apontando para o Model Cidade.
Bom dia,
Utilizo o Adianti Pro mas não estou conseguindo listar os dados no dbgrid.
Posta os models: Cliente e Cidade para podermos ajudar!