我需要从PDO获取PHP数据,并在飞行过程中进行一些数据转换。最佳变体是FETCH_CLASS
模式和FETCH_FUNC
模式。
但是FETCH_CLASS
的问题是每个属性都需要抛出__set()
方法来进行转换,或者至少检查它是否需要转换。对于每行50列的40K行,需要花费太多时间。
FETCH_FUNC
对我来说似乎很理想,因为我一次得到行的所有列,可以进行一些转换但是唯一的问题是我没有列名会导致列值生效作为参数,获取它们的唯一方法是调用func_get_args()
。
所以一般来说问题是 - >如何在类,函数的某些方法中同时获取行数据,使用PDO FETCH模式的某种组合作为关联数组,obj或某些类似columnName-> columnValue结构?获得结果后使用foreach很长 - 我想在调用pdo fetchAll()
方法之后获得已转换的数据
答案 0 :(得分:0)
对我而言,就像你在思考这一点,并试图过于聪明。这样做会很好:
$data = [];
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$data[] = myTransformation($row);
}
换句话说,只需使用FETCH_ASSOC
获取,然后根据该结果调用您的函数。