Symfony1 检查保存表单时更改了多少字段

Symfony1 检查保存表单时更改了多少字段,symfony1,symfony-1.4,doctrine-1.2,Symfony1,Symfony 1.4,Doctrine 1.2,我正在使用symfony1.4和条令在事务中保存记录 插入的行来自定期更新的CSV文件。我已经有了一个方法,可以检查CSV中的记录是否与DB中的记录匹配,并且不插入 理想情况下,我想做的是设置一个用户flash,告诉他们在导入CSV文件时更新了多少行 $conn = ProductTable::getInstance()->getConnection(); $conn->beginTransaction();

我正在使用symfony1.4和条令在事务中保存记录

插入的行来自定期更新的CSV文件。我已经有了一个方法,可以检查CSV中的记录是否与DB中的记录匹配,并且不插入

理想情况下,我想做的是设置一个用户flash,告诉他们在导入CSV文件时更新了多少行

            $conn = ProductTable::getInstance()->getConnection();
            $conn->beginTransaction();

            try {
                $row = 1;
                while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                    if ($row > 1) {
                        $values = array(
                            'blah'            => null
                        );

                        $obj= ProductTable::getInstance()->findOrCreateNewProduct(
                            $values['blah']
                        );


                        $obj->merge($values);
                        $obj->save($conn);
                    }

                    $row++;
                }

                $conn->commit();

            } catch (Doctrine_Exception $e) {
                $conn->rollback();

                throw $e;
            }
我想知道如何获得这些更新的字段。它是在
actions.class.php
中还是在实际的
form.class.php
文件中


感谢

在上,您可以调用一个
doctor\u Record::getModified()
,它将为您提供一个已修改的字段数组(尽管它们的值对您来说并不重要)。然后,您可以调用返回数组的count,并将累计总数保持在循环之外

        $conn = ProductTable::getInstance()->getConnection();
        $conn->beginTransaction();
        $nbModified = 0;

        try {
            $row = 1;
            while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                if ($row > 1) {
                    $values = array(
                        'blah'            => null
                    );

                    $obj= ProductTable::getInstance()->findOrCreateNewProduct(
                        $values['blah']
                    );


                    $obj->merge($values);
                    $nbModified += count($obj->getModified());
                    $obj->save($conn);
                }

                $row++;
            }

            $conn->commit();

            // return $nbModified or otherwise do something with it here

        } catch (Doctrine_Exception $e) {
            $conn->rollback();
            // youre rolling back so just for consistency set $nbModified to zero
            $nbModified = 0;

            throw $e;
        }

我将把'Doctrine_Record::getModified()'放在哪里?在循环中?当我更新CSV字段并重新上传时,感谢您的帮助。谢谢。就像在主记录中一样,您也在保存或包含关系更新?假设我的数据库中有10行。CSV文件有5个字符。如果我随后解析CSV,并且CSV中的3行与db中的3行不同,那么我希望使用flash消息向用户推送“3行已更新”。