8

CakePHP 2.x に tinyint データベース列をブール値ではなく tinyint として取得させるにはどうすればよいですか?

MySQL:

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

CakePHP:

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

値は常に 0 (カテゴリ ID 0 としてフェッチしている質問の場合) または 1 (質問に他のカテゴリ ID がある場合) です。

4

4 に答える 4

17

TINYINT(2)代わりに使用してください。長さが1の場合、Cakeはそれをブール値と見なします。

于 2012-05-29T15:07:43.527 に答える
1

ここで Cakephp4 に道を譲ります

use Cake\Database\Schema\TableSchema;

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

        return $schema;
    }
}
于 2020-04-21T12:15:45.103 に答える
0

以下は、フェッチする前にキャストした場所で機能しました。

$result = $this->Question->find('first', array('conditions'=>array('id'=>$id),'fields'=>array('CAST(Question.category AS SIGNED) as category')));
echo $result[0]['category'];
于 2021-07-23T10:58:54.187 に答える