在 Symfony 中使用 Doctrine 的 DBAL 检索布尔值
Retrieving boolean values with Doctrine's DBAL in Symfony
我在 Symfony 项目中使用 DBAL 来访问 Mysql 数据库中的数据。使用布尔字段(创建为 tinyint)查询表时,我在 PHP 中得到 tinyint 值,但我想得到布尔值。
不知何故,我想获得与直接使用 Doctrine 相同的映射。
我认为映射转换(从 mysql 到 php)已经在 DBAL 中实现了,但我不确定它是否应该以这种方式工作(这一层映射值返回).
我试过像下面这样注册自定义映射,但没有成功:
$this->conn->getDatabasePlatform()->registerDoctrineTypeMapping('tinyint', 'boolean');
$sql = "
SELECT se.survey_id, se.anonymous
FROM survey_edition se
";
$stmt = $this->conn->prepare($sql);
$stmt->execute();
$result = $stmt->fetch();
在这种情况下,'anonymous' 是 Mysql 中的一个 tinyint(1) 字段,但我希望 $result['anonymous'] 是布尔值而不是整数。
您知道是否可以通过 Doctrine 的 DBAL 从 Mysql 查询中获取 PHP 中的布尔值吗?
谢谢。
如果不使用某些 ORM
,您将无法(据我所知)定义模型类型。
解决这个问题的方法是遍历数据并转换布尔值,例如:
$item[$i]['foobar'] = (bool)$item[$i]['foobar']
但这还远不是理想的解决方案。
我在 Symfony 项目中使用 DBAL 来访问 Mysql 数据库中的数据。使用布尔字段(创建为 tinyint)查询表时,我在 PHP 中得到 tinyint 值,但我想得到布尔值。
不知何故,我想获得与直接使用 Doctrine 相同的映射。
我认为映射转换(从 mysql 到 php)已经在 DBAL 中实现了,但我不确定它是否应该以这种方式工作(这一层映射值返回).
我试过像下面这样注册自定义映射,但没有成功:
$this->conn->getDatabasePlatform()->registerDoctrineTypeMapping('tinyint', 'boolean');
$sql = "
SELECT se.survey_id, se.anonymous
FROM survey_edition se
";
$stmt = $this->conn->prepare($sql);
$stmt->execute();
$result = $stmt->fetch();
在这种情况下,'anonymous' 是 Mysql 中的一个 tinyint(1) 字段,但我希望 $result['anonymous'] 是布尔值而不是整数。
您知道是否可以通过 Doctrine 的 DBAL 从 Mysql 查询中获取 PHP 中的布尔值吗?
谢谢。
如果不使用某些 ORM
,您将无法(据我所知)定义模型类型。
解决这个问题的方法是遍历数据并转换布尔值,例如:
$item[$i]['foobar'] = (bool)$item[$i]['foobar']
但这还远不是理想的解决方案。