1
Semon 2012-09-06 20:14:01 +08:00
session开了吗?session目录权限?
|
2
yibin001 OP @Semon 看cakephp源代码看出了问题,因为cakephp用的是pdo,而Model类里用到了PDOStatement::getColumnMeta()方法,读取表名,最后用表名作为KEY拼成数组返回。
很不幸,PDOStatement::getColumnMeta()只是一个实验性的方法,很有可能在某些版本被XX掉,恰好,服务器上的PDOStatement::getColumnMeta()方法无法读取表名,所以返回了下标数组。。。 不明白为什么Cakephp与PDOStatement::getColumnMeta()这么耦合,虽然可以用下标获取数据,但官方压根没提到这一点,代码里都是用ModelName为key获取数据,这不是坑爹了么。。。 唉。 |
3
yibin001 OP 相关源代码:
/** * Builds a map of the columns contained in a result * * @param PDOStatement $results * @return void */ public function resultSet($results) { $this->map = array(); $numFields = $results->columnCount(); $index = 0; while ($numFields-- > 0) { $column = $results->getColumnMeta($index); if (empty($column['native_type'])) { $type = ($column['len'] == 1) ? 'boolean' : 'string'; } else { $type = $column['native_type']; } if (!empty($column['table']) && strpos($column['name'], $this->virtualFieldSeparator) === false) { $this->map[$index++] = array($column['table'], $column['name'], $type); } else { $this->map[$index++] = array(0, $column['name'], $type); } } } |
4
Semon 2012-09-06 23:49:26 +08:00
还是用ZendFramework靠谱一些。
|
5
PrideChung 2012-09-06 23:51:07 +08:00
@Semon 貌似ZendFramework在PHP开发者之中口碑都不太好……
|
6
Semon 2012-09-07 01:03:57 +08:00
@PrideChung 仁者见仁,我用得挺好,主要是方便。
|