Problema con el uso de datos_tabla / datos_relacion

Buenas,

Les paso a explicar, tengo un proceso muy largo que está divido en varias etapas / funciones. En cada paso se actualizan varias tablas, para esto utilizo directamente los datos_tabla y/o los datos_relacion de los cuales genero su instancia usando:

$rasistentes = toba::componente(‘2000948’); // para el caso de relaciones

ó

$tasistentes = toba::tabla(‘mdl_com_asis’); // para el caso de tablas simples

El problema se presenta cuando, luego de que en una relación se menciona un datos_tabla el mismo persiste fuera de la función donde se creó la instancia, y esto causa que cuando utilizo el datos tabla simple, el mismo “recuerde” los estados de la relación produciendo resultados no deseados.

La pregunta en concreto es :

una vez que se generó la instancia de un datos_tabla o datos_relacion hay forma de eliminarla de la memoria/sesión ?

La versión de toba es 2.0

Desde ya muchas gracias.

Saludos.

Hola Jose,

partamos de la base que es un tanto extraña la manera de utilizacion que tenes. Es decir, si sabes cuales son los objetos a ser utilizados (ya que los cargas mediante literales) quizas deberias enlazarlos desde el editor.

Por otro lado, cuando se instancia una relacion… se instancian tambien todas las tablas que la componen y al ser un “objeto de persistencia” el comportamiento esperado es que mantenga sus valores incluso entre pedidos de pagina.

El tema es que la llamada a toba::tabla(), reutiliza las instancias de los objetos si ya fueron creados, por lo tanto lo que recuperas ahi es la instancia que forma parte de la relacion.
Contame un poco mas en que forma los estas usando, cual es la funcionalidad que esperas de cada uno, quizas podamos encontrar una forma distinta de encararlo.

Saludos

Buenas,

Richad

no los enlazo desde el editor dado que no son operaciones, son “procesos” que se ejecutan como tareas. Cada tarea ejecuta varios procesos y cada proceso se encarga de hacer algo especializado, para ello accede a las tablas / relaciones y actualiza los datos que correspondan.

Un proceso, por ejemplo, accede a una relación, para cargar datos en una la tabla maestra y una tabla detalle. Luego otro proceso, solo necesita actualizar en la tabla detalle, sin necesidad de hacer referencia a la que en la relación era la tabla maestra. El primer proceso puede ejecutarse una vez, mientras que el segundo proceso reiterada veces, digamos que nos independientes luego de la carga inicial.

El problema se presenta cuando se ejecutan uno seguido del otro, el primer proceso instancia la relación, por lo que instancia ambas tablas, cuando el segundo proceso se ejecuta, solo necesita la tabla detalle, pero debido a lo que vos comentas, se instancia como si aún estuviera dentro de la relación, lo que causa que, por ejemplo, los registros se filtren, por mas que en el proceso anterior haya realizado un resetear de la relación.

La verdad que todo funciona muy bien, salvo en este caso que te cuento, cuando primero la tabla se instancia como parte de una relación y luego sola, entonces es cuando surge el problema; de no, nunca me hubiera dado cuenta de nada…

Si, puede sonar un poco enredado, pero al no haber una operación detrás, no se me ocurrió otra forma de instanciar los datos tabla/relación y estaba convencido que al tratarse de procesos que se ejecutan uno seguido del otro, esas instancias “morían” cuando el proceso terminaba o cuando limpiaba la variable que las contenían…

Saludos

Hola Jose,

subi un fix que permite forzar que no se use la instancia del objeto tabla que se encuentra en el cache de runtime y se genere una nueva instancia.
Contame como te va con el cambio.

Saludos