Esto es por el diseño de CakePHP. CakePHP siempre ve tinyint(1) como booleano, por lo tanto, siempre convertirá su valor a true /false de ahí el 1 /0 .
Para solucionar este problema, use tinyint(2) en lugar de su tipo de columna. ¡Recuerda borrar la memoria caché de tu modelo!
Documentación del tipo de datos de CakePHP:
https://book.cakephp.org/3.0/en/orm/database-basics.html#tipos-de-datos
Publicación de blog sobre esto:
https://blog.room34.com/archives/2649
Preguntas y respuestas similares:
CakePHP y tinyint como boolean