Почему максимальное значение для tinyint (1) отображается как 1 в cakephp 2.10? [Дубликат]

Если внешняя type команда недоступна (как принято здесь ), мы можем использовать POSIX-совместимый env -i sh -c 'type cmd 1>/dev/null 2>&1':

# portable version of Bash's type -P cmd (without output on stdout)
typep() {
   command -p env -i PATH="$PATH" sh -c '
      export LC_ALL=C LANG=C
      cmd="$1" 
      cmd="`type "$cmd" 2>/dev/null || { echo "error: command $cmd not found; exiting ..." 1>&2; exit 1; }`"
      [ $? != 0 ] && exit 1
      case "$cmd" in
        *\ /*) exit 0;;
            *) printf "%s\n" "error: $cmd" 1>&2; exit 1;;
      esac
   ' _ "$1" || exit 1
}

# get your standard $PATH value
#PATH="$(command -p getconf PATH)"
typep ls
typep builtin
typep ls-temp

По крайней мере, на Mac OS X 10.6.8 с использованием Bash 4.2.24 (2) command -v ls не соответствует перемещенному /bin/ls-temp.

1
задан Md. Samsull Arefeen 5 April 2016 в 11:41
поделиться

1 ответ

Это дизайн CakePHP. CakePHP всегда видит tinyint(1) как boolean, поэтому он всегда будет преобразовывать ваше значение в true / false, следовательно, 1 / 0.

Чтобы устранить эту проблему, используйте tinyint(2) вместо для вашего типа столбца. Не забудьте очистить кэш вашей модели!


Документация типа данных CakePHP: http://book.cakephp.org/3.0/en/orm/database-basics.html#data-types

Сообщение в блоге об этом: http://blog.room34.com/archives/2649

Подобный Q & amp; A: CakePHP и tinyint как boolean

2
ответ дан Community 27 August 2018 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: