2011年2月21日星期一

Re: [fw-db] Zend_Db_Table Issue

The problem was resolved by adding keys to the model

$_primary = array('id','numero_atual');

Anyway

Thank you


Em 21/02/2011 19:00, Joseph007 escreveu:
> It looks like an error.
>
> If you could implement a simplest code to reproduce this issue and file
> a ticket on bug-tracker.
>
> Or just attach ZIP with that code to you message here, that will allow
> anyone to run that code and easy reproduce the error on its development
> machine.
>
> Joseph Chereshnovsky
>
> On Mon, 2011-02-21 at 14:09 -0300, Rafael wrote:
>> It doesn't works with MyISAM also, So the problem is not with the
>> database engine.
>>
>> Anyway thanks,
>>
>> Rafael
>>
>> Em 21/02/2011 13:27, Christian Proske escreveu:
>>> Hy Rafael,
>>>
>>> have u read this:
>>>
>>> "Declaring cascading operations in Zend_Db_Table is intended only for RDBMS brands that do not support declarative referential integrity (DRI)."
>>>
>>> Source: http://framework.zend.com/manual/en/zend.db.table.relationships.html
>>>
>>> So I think that means it is NOT possible to implement DRI in ZF with InnoDB, because InnoDB supportes DRI.
>>>
>>> Please correct me if I'm wrong.
>>>
>>> For more information on how to InnoDB& Foreign Key Constraints: http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html
>>>
>>> Regards,
>>> Chris
>>>
>>> Am 21.02.2011 um 17:12 schrieb Rafael:
>>>
>>>> Well, It doesn't thorows a exception but give that notice, my code to delete the row is below
>>>>
>>>> function deletarID($id) {
>>>>
>>>> $processo = $this->find($id);
>>>>
>>>> $result = $processo->current()->delete();
>>>>
>>>> return $result;
>>>> }
>>>>
>>>>
>>>> Em 21/02/2011 06:43, Joseph007 escreveu:
>>>>> Hi,
>>>>>
>>>>> Can you please provide an actual code used by you to delete row, that
>>>>> throws mentioned error?
>>>>>
>>>>> Regards,
>>>>> Joseph Chereshnovsky
>>>>>
>>>>> On Wed, 2011-02-16 at 01:53 -0200, Rafael wrote:
>>>>>> Hello,
>>>>>>
>>>>>> I don't know if it is the right to ask however i have one issue that
>>>>>> nobody else managed to solve it.
>>>>>>
>>>>>> I'm using zend framework 1.11.3, PHP 5.3 and MySQL 5.1 configured with
>>>>>> InnoDB engine. I'm trying to make a relationship between two tables
>>>>>> to apply cascade deletion but deletes only parental row and return me
>>>>>>
>>>>>> Notice: Undefined index: numero_atual in
>>>>>> C:\htdocs\Advocacia\library\Zend\Db\Table\Abstract.php on line 1197
>>>>>>
>>>>>> It happens when i try to delete one row from the model
>>>>>> Application_Model_ProcessosJudicial , I really can't see anything wrong
>>>>>> in the code or...
>>>>>>
>>>>>> I would be thankful if anyone check it for me
>>>>>>
>>>>>> class Application_Model_ProcessosJudicial extends Zend_Db_table {
>>>>>>
>>>>>> protected $_name = "processos_judicial";
>>>>>> protected $_dependentTables = array('Application_Model_Partes',
>>>>>> 'Application_Model_Andamentos');
>>>>>>
>>>>>> protected $_referenceMap = array(
>>>>>> 'Andamento' => array(
>>>>>> 'columns' => array('numero_atual'),
>>>>>> 'refColumns' => array('numero_atual'),
>>>>>> 'refTableClass' => 'Application_Model_Andamentos',
>>>>>> 'onDelete' => self::CASCADE,
>>>>>> 'onUpdate' => self::RESTRICT
>>>>>> )
>>>>>> );
>>>>>>
>>>>>> }
>>>>>>
>>>>>>
>>>>>> class Application_Model_Andamentos extends Zend_Db_table {
>>>>>>
>>>>>> protected $_name = "processos_andamentos_judicial";
>>>>>>
>>>>>> protected $_referenceMap = array(
>>>>>> 'Andamento' => array(
>>>>>> 'refTableClass' => 'Application_Model_ProcessosJudicial',
>>>>>> 'refColumns' => array('numero_atual'),
>>>>>> 'columns' => array('numero_atual'),
>>>>>> 'onDelete' => self::CASCADE,
>>>>>> 'onUpdate' => self::RESTRICT
>>>>>> )
>>>>>> );
>>>>>>
>>>>>> }
>>>>>>
>>>>>> My table structure
>>>>>>
>>>>>>
>>>>>> CREATE TABLE IF NOT EXISTS `processos_andamentos_judicial` (
>>>>>> `id` int(11) NOT NULL AUTO_INCREMENT,
>>>>>> `numero_atual` varchar(30) CHARACTER SET latin1 DEFAULT NULL,
>>>>>> `data` datetime DEFAULT NULL,
>>>>>> `andamento` varchar(60) CHARACTER SET latin1 DEFAULT NULL,
>>>>>> `complemento` varchar(60) CHARACTER SET latin1 DEFAULT NULL,
>>>>>> `observacao` longtext CHARACTER SET latin1,
>>>>>> `tipo_processo` varchar(45) CHARACTER SET latin1 DEFAULT NULL,
>>>>>> PRIMARY KEY (`id`),
>>>>>> KEY `numero` (`numero_atual`)
>>>>>> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;
>>>>>>
>>>>>> CREATE TABLE IF NOT EXISTS `processos_judicial` (
>>>>>> `id` int(11) NOT NULL AUTO_INCREMENT,
>>>>>> `numero_atual` varchar(30) CHARACTER SET latin1 DEFAULT NULL,
>>>>>> `numero_antigo` varchar(30) CHARACTER SET latin1 DEFAULT '',
>>>>>> `data_distribuicao` date DEFAULT NULL,
>>>>>> `orgao` varchar(30) CHARACTER SET latin1 DEFAULT NULL,
>>>>>> `circunscricao` varchar(30) CHARACTER SET latin1 DEFAULT NULL,
>>>>>> `local` varchar(30) CHARACTER SET latin1 DEFAULT NULL,
>>>>>> `feito` varchar(30) CHARACTER SET latin1 DEFAULT NULL,
>>>>>> `rito` varchar(45) CHARACTER SET latin1 DEFAULT NULL,
>>>>>> `fase` varchar(45) CHARACTER SET latin1 DEFAULT NULL,
>>>>>> `encerrado` tinyint(1) DEFAULT NULL,
>>>>>> `encerrado_data` date DEFAULT NULL,
>>>>>> `encerrado_motivo` varchar(45) CHARACTER SET latin1 DEFAULT NULL,
>>>>>> `suspenso` tinyint(1) DEFAULT NULL,
>>>>>> `suspenso_data` date DEFAULT NULL,
>>>>>> `valor_causa` varchar(30) CHARACTER SET latin1 DEFAULT NULL,
>>>>>> `assistencia_gratuita` tinyint(1) DEFAULT NULL,
>>>>>> `percentual` varchar(30) CHARACTER SET latin1 DEFAULT NULL,
>>>>>> `resumo` varchar(30) CHARACTER SET latin1 DEFAULT NULL,
>>>>>> `ultima_modificao` datetime DEFAULT NULL,
>>>>>> `criacao` datetime DEFAULT NULL,
>>>>>> PRIMARY KEY (`id`),
>>>>>> KEY `numero_atual` (`numero_atual`)
>>>>>> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=43 ;
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>
>>
>
>
>

没有评论: