2013-01-25 47 views
0

我正在开发一个项目,并且该项目的一部分要求我将一些sql结果转换为一个类对象数组。设置数组键初始化(pdo fetch_class)

为了方便起见,我更愿意将我的数组键设置为sql行的主键,以便我可以快速访问它们。

我现在正在做的方式是重新映射每个对象到一个新的数组,我手动设置键为$ object-> id。有没有什么办法可以让pdo在获取初始数组的时候这么做,所以我不需要去做我正在做的事情。

回答

1

嗯,你可以这样做:

array_map(
    'reset', 
    $stmt->fetchAll(
     PDO::FETCH_GROUP|PDO::FETCH_CLASS, 
     'className' 
    ) 
); 

但这未必比你现在正在做什么漂亮得多。另请参阅herehere

或者可能涉及PDO::FETCH_KEY_PAIR

+0

漂亮对我来说不算什么大事,我只是想找到一个解决方案,将有最好的表现。 我在想,将对象复制到一个新的数组将是我的内存命中。 我喜欢你的解决方案,我可能会尝试实施它。谢谢:) – Adrian

+0

我喜欢这个解决方案,但它并没有把主键带入课堂。假设该类有一个PK字段,该值将为NULL。 – Carl