Hola a todos
Tengo un problema al crear nuevos campos en una tabla ya existente en la BD, pues Yii2 no los reconoce.
Es decir, creo un nuevo campo en la tabla, y después lo agrego al modelo correspondiente, pero no me muestra los nuevos datos en la vista (es en un grid), me dice (No definido), a pesar de si existir datos en ese campo.
Y cuando agrego ese campo al ModelSearch, me dice que no reconoce ese campo, que no existe.
Retomo la pregunta, pues en localhost si se resolvio el problema despues de varios minutos, pero cuando lo subi al servidor (debian 8), demora mucho en reconocer los nuevos campos
Que le pasará a Yii2 con los nuevos campos? será un bug?
Estoy usando el advance
Recuerdo cuando inicie el proyecto hace algunos años, esto no sucedía.
Después que actualice hace un tiempo el Yii2 a la version 2.0.40, es que me doy cuenta ahora cuando agrego nuevos campos a la BD que se demora un tiempo un asumir ese cambio.
Uso Firefox 95.02 y tambien Chrome Versión 96.0.4664.93 (Build oficial) (64 bits), y sucede lo mismo con los dos.
Hace mas de 10 minutos que agregue otro campo nuevo en una vista de mysql, y aún Yii2 sigue diciendo que ese campo no existe.
En el modelo no da error, donde lo da es en el modelsearch
Correcto, asi mismo siempre lo he hecho.
Y a pesar de que lo pongo en la funcion: public function rules() { } sigue diciendo que no existe, y sí existe, pues lo verifique bien en la BD y está, tambien esta en las reglas del modelo. Es algo raro.
Un detalle que quizas influya, podria ser que los modelos inicialmente los generé con Gii, y ahora estos nuevos campos lo estoy agregando de forma manual??
Estoy usando como IDE PHPStorm, aunque pienso que eso no influya en nada
No importa si los genera con Gii, me paso lo mismo pero tenía el nombre del campo con letra mayus, y el campo era minus, verifique, usas mysql o postgresql ?
Uso MySQL, y verifique lo de las mayusculas/minusculas en el nombre del campo, y habia una letra diferente en el nombre “e” por “E”, parece que ese era el problema de que siempre me daba el error.
Pero aun así, demoró un rato en asimilar el cambio, es algo bastante raro, que al final sale bien, pero es algo molesto tener que esperar varios minutos, para ver los resultados, esto sucede solo cuando agrego nuevos campos en la BD, en los demás casos los cambios si salen al momento.
Creo que voy a tener que lidiar con ese problema, pero me quedo con la intriga de por que yii2 hace eso.
Podría ser que su aplicación esté almacenando en caché la estructura de sus tablas. Elimine el contenido de la carpeta “runtime/cache” de su aplicación y vea si se resuelve.
Pues era eso mismo que comentas jjmf, borre la cache y solucionado el problema, asimilo los cambios al momento.
Un detalle del que me di cuenta cuando estaba probando la solución, es que el problema solo se presentaba en campos nuevos cuando los tomaba de una vista, si los tomaba directo de la tabla no sucedía.
Pero bueno, ya se lo que tengo que hacer cuando me suceda de nuevo.
ajustar las rules del modelo (como mínimo poner los nuevos campos como safe). Solo si estos campos van a recibir input directo del usuario.
ajustar los attributeLabels() es opcional, pero ayuda
ajustar el PHPDoc al inicio de la clase modelo, también opcional, pero se agradece
si estás usando al app-advanced, puedes configurar DummyCache en el main-local.php para que reemplace los componentes de cache que se usan en produción mientras estás en desarrollo. Y por supuesto limpiar esa cache en produccion con cada migración.