Home » Php » php – CakePHP and tinyint as boolean

php – CakePHP and tinyint as boolean

Posted by: admin July 12, 2020 Leave a comment

Questions:

How can I force CakePHP 2.x to retrieve tinyint database column not as boolean but as tinyint?

MySQL:

Column        |    type
-------------------------------
...           |    ...
category_id   |    tinyint(1)
...           |    ...

CakePHP:

$this->request->data = $this->Question->read();
var_dump($this->request->data['Question']['category']);

The value is always 0 (if the question I’m fetching as the category id 0) or 1 (if the question has any other category id).

How to&Answers:

Use TINYINT(2) instead. If the length is 1, Cake sees it as a boolean.

Answer:

The proper way (CakePHP3), if anyone is still having this problem

Model\UsersTable.php

protected function _initializeSchema( Schema  $schema)
{
    //this is a bigInt(20) field (other same type known Cakephp problem)
    $schema->columnType('OtherField'  , 'string');

    //this is a tinyint field
    $schema->columnType('Type'        , 'integer');

    return $schema;
}

Answer:

Here giving the way for cakephp4

use Cake\Database\Schema\TableSchema;

class UsersTable extends Table
{
    protected function _initializeSchema(TableSchema $schema)
    { 
        $schema->setColumnType('my_column', 'integer');

        return $schema;
    }
}