C'est par la conception de CakePHP. CakePHP voit toujours tinyint(1) comme booléen, il convertira donc toujours votre valeur en true /false d'où le 1 /0 .
Pour surmonter ce problème, utilisez tinyint(2) à la place pour votre type de colonne. N'oubliez pas de vider le cache de votre modèle !
Documentation sur les types de données CakePHP :
http ://book.cakephp.org/3.0/en/orm/database-basics.html#data-types
Article de blog à ce sujet :
https://blog.room34.com/archives/2649
Questions et réponses similaires :
CakePHP et tinyint comme booléen