我正在使用Phalcon 3,当我查询我的数据库时,我想返回真正的类型,它更适合API响应。所以我正在使用这个配置:
\Phalcon\Mvc\Model::setup(['castOnHydrate' => false]);
和
$di->set('db', function () use ($config) {
return new DbAdapter(array(
'host' => $config->database->host,
'username' => $config->database->username,
'password' => $config->database->password,
'dbname' => $config->database->dbname,
'charset' => $config->database->charset,
'options' => [
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_STRINGIFY_FETCHES => false,
]
));
});
问题是mysql有一个布尔类型(TINYINT
0或1)
我如何将此TINYINT
转换为布尔值?因为castOnHydrate
只返回0或1的整数。我想得到真/假。
也许有一种方法可以配置我的模型来指定哪个列是布尔值?
我知道最快的解决方案:
为模型中的列创建一个setter和getter并保护该属性
例如列is_finished
/**
*
* @var integer
*/
protected $is_finished;
public function getIsFinished()
{
return boolval($this->is_finished);
}
public function setIsFinished($value)
{
$this->is_finished = intval($value);
}
现在你可以使用setter和getter,它会自动转换
$model = Model::findFirst();
$is_finished = $model->is_finished; // true|false
$is_finished = $model->getIsFinished(); // true|false
$model->is_finished = false; // 0
$model->setIsFinished(true); // 1