La idea es probar lo mencionado en el titulo.
Para el Modelo de Datos, pensaremos en una entidad como Cuentas Contables
cuenta_contable:
_attributes: { phpName: CuentaContable, treeMode: NestedSet }
id:
lft: { type: integer, index: true, required: true, default: 0, nestedSetLeftKey: “true” }
rgt: { type: integer, index: true, required: true, default: 0, nestedSetRightKey: “true” }
scope: { type: integer, index: true, required: true, default: 0, treeScopeKey: “true” }
los ultimos atributos de lft rgt y scope, va con comillas, si queres que al generar el XML, quede en true y no en 1
La idea de un nested set model, es poder tratar los datos y grupos de ellos con delimitadores.
Imaginemos la numeracion de una larga Avenida o Ruta de nuestra ciudad. Muhcas veces ese camino, atraviesa distintos barrios, departamentos o distritos, incluso las rutas atraviesan provincias y estados.
Pensemos por ahora en alguna cuadra de 100 metros de esa avenida. Esa cuadra tiene una numeracion inicial y final, ej 501 a 600. En ese tramo hay casas con su domicilio. Por ende si quiesiera considerar a todas las casa de la cuadra deberiamos seleccionar toda numeracion comprendida entre 501 y 600.
Si tomamos unas cuadras mas y pensamo en los limistes de un barrio, tendremos una primer cuadra y una ultima, ambas con su numeracion inicial y final, ejemplo 001 a 2500 (serian 25 cuadras). Si quisieramos saber todos los domicilios de ese barrio para la avenida X, solo deberiamos buscar todo lo comprendido entre 001 y 2500.
Y asi sucesivamente, podriamos pensar en distrito, y luego otra representacion superior como el estado o provincia.
Aqui la idea es que hay representaciones de datos, que estan contenidas en otras, en forma recursiva. Y que cada representacion tiene un indice inicial y final (para simplificar el caso, los domicilios, no se le impuso esta condicion, pero deberian tenerla para este modelo de datos).
1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2 . . . . . . . . 7 8 . . . . . . . . . . . . . . 13
3 . . 4 5 . . 6 9 . . . . 10 11 . . . . 12