многие приложения и платформы пытаются использовать так называемое интеллектуальное определение типа переменной перед тем, как вставить их в базу данных
однако, многие из них также терпят неудачу с целыми числами и строками:)
из-за PHP автоматической типизации вы можете выполнить следующую проверку: is_int ('01234') и это вернет TRUE - но на самом деле не верно - «число» на самом деле является строкой, начинающейся с 0, и поэтому должно обрабатываться (если только вручную не преобразовано в целое число, если это именно так и должно быть)
вам нужно настроить класс базы данных CakePHP, где он проверяет типы данных
Я не знаком с CakePHP, но CodeIgniter использовал следующую проверку в своей функции escape ():
if (is_string($str))
... который я изменил на:
if (is_string($str) && (mb_strlen((int) $str) != strlen($str)))
... и теперь все это работает:)
P.S.: Я пытался использовать (int) $ str === $ str, однако это всегда давало неверный результат