Isto é pelo design do CakePHP. CakePHP sempre vê
tinyint(1) como booleano, portanto, sempre converterá seu valor para true /false daí o 1 /0 . Para superar esse problema, use
tinyint(2) em vez de seu tipo de coluna. Lembre-se de limpar o cache do seu modelo! Documentação do tipo de dados do CakePHP:
https://book.cakephp.org/3.0/en/orm/database-basics.html#data-types
Postagem no blog sobre isso:
https://blog.room34.com/archives/2649
Perguntas e respostas semelhantes:
CakePHP e tinyint como boolean