我使用的是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。我想得到true / false。
也许有一种方法可以配置我的模型以指定哪一列是布尔值?
答案 0 :(得分:0)
我知道的最快的解决方案:
为模型中的列创建一个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