Não consigo gravar mais de um item no mestre detalhe no detalhe
public function onSave($param)
{
try
{
// open a transaction with database
TTransaction::open('erphouse');
$data = $this->form->getData();
$this->form->validate();
$master = new Agente;
$master->fromArray( (array) $data);
$master->store();
AgenteItem::where('id', '=', $master->id)->delete();
if( $param['AgenteItem_list_cidade_id'] )
{
foreach( $param['AgenteItem_list_cidade_id'] as $key => $item_id )
{
$detail = new AgenteItem;
$detail->cidade_id = $param['AgenteItem_list_cidade_id'][$key];
$detail->id = $master->id;
$detail->store();
}
}
TTransaction::close(); // close the transaction
TForm::sendData('form_Agente', (object) ['id' => $master->id]);
new TMessage('info', AdiantiCoreTranslator::translate('Record saved'));
}
catch (Exception $e) // in case of exception
{
new TMessage('error', $e->getMessage());
$this->form->setData( $this->form->getData() ); // keep form data
TTransaction::rollback();
{
try
{
// open a transaction with database
TTransaction::open('erphouse');
$data = $this->form->getData();
$this->form->validate();
$master = new Agente;
$master->fromArray( (array) $data);
$master->store();
AgenteItem::where('id', '=', $master->id)->delete();
if( $param['AgenteItem_list_cidade_id'] )
{
foreach( $param['AgenteItem_list_cidade_id'] as $key => $item_id )
{
$detail = new AgenteItem;
$detail->cidade_id = $param['AgenteItem_list_cidade_id'][$key];
$detail->id = $master->id;
$detail->store();
}
}
TTransaction::close(); // close the transaction
TForm::sendData('form_Agente', (object) ['id' => $master->id]);
new TMessage('info', AdiantiCoreTranslator::translate('Record saved'));
}
catch (Exception $e) // in case of exception
{
new TMessage('error', $e->getMessage());
$this->form->setData( $this->form->getData() ); // keep form data
TTransaction::rollback();
Você está definindo o mesmo id para todos os detalhes, assim um acaba sobrescrevendo o outro
Mesma coisa no delete da AgenteItem, deve ser agente_id = master->id.
era isto mesmo.
problema agora não esta gravando id na tabela detalhe