php - 如何通过PDO正确获取以表的主键作为数组键的数组?

标签 php yii pdo

我已经阅读了一些资料,截至目前,我知道实现此目标的 3 种方法。

1:使用PDO::FETCH_KEY_PAIR

例子:

$Query=Yii::app()->db->createCommand('SELECT col1,col2 FROM '.static::tableName().' ORDER BY '.static::tablePrefix().'_id');
$Query->setFetchMode(PDO::FETCH_KEY_PAIR);
return $Query->queryAll();

效果非常好,但是...仅适用于 2 列。 (顺便说一句,还有其他方法可以传递获取类型吗?CDbCommand 类及其查询函数只接受 true/false。

2:使用PDO::FETCH_GROUP|PDO::FETCH_ASSOC + array_map('reset', $result)

例子:

$Query=Yii::app()->db->createCommand('SELECT users.user_id,summoners.summoner_name,users.user_login FROM `participants` INNER JOIN `users` ON participant_id=user_id INNER JOIN `summoners` ON user_id=summoner_user_id WHERE participants.tournament_id=1 AND summoners.summoner_region=\'eune\'');
$Query->prepare();
$Query=$Query->getPdoStatement();
$Query->execute();
$Result=$Query->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC);
return array_map('reset', $Result);

这很奇怪,令人困惑,而且看起来确实多余且无效。如果不从 Yii 的 CDbCommand 中提取语句,可能有一些更简单的方法,但仍然如此。

3: 使用query() + foreach

例子:

$Query=Yii::app()->db->createCommand('SELECT users.user_id,summoners.summoner_name,users.user_login FROM `participants` INNER JOIN `users` ON participant_id=user_id INNER JOIN `summoners` ON user_id=summoner_user_id WHERE participants.tournament_id=1 AND summoners.summoner_region=\'eune\'');
$Data=$Query->query();
foreach ($Data as $row)
    foreach ($row as $k=>$v)
        if($k!='user_id') $Result[$row['user_id']][$k]=$v;
return $Result;

所以第三个选项似乎是可行的方法,但我们没有相应的提取类型吗?我的意思是……现在是 2014 年,而不是 1990 年。

最佳答案

不,我们不悲伤。如果您深入研究 Yii 的 ActiveRecord 系统以查看 index 是如何为关系设置的,您会发现其中有一个 forrach 循环 :-/

我知道,因为我有同样的问题,并且希望得到与您正在寻找的相同的答案;-)

关于php - 如何通过PDO正确获取以表的主键作为数组键的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25060449/

相关文章:

php - Yii:从模型的嵌套连接表访问属性

yii - Findallbyattributes 与相关模型

php - mysql 中的 rowCount 处理某些带有值的列

php - 如何计算每门类(class)的教授学生人数

PHP/IIS - Sessions_save_path - 已创建 session 数据但发生错误且无法完成安装

javascript - PHP canvas图片上传到远程服务器

php - 无法访问在 cpanel 中创建的文件夹

php - IIS 7.0 增加 URL 大小限制

php - Yii 添加另一个 $content 到模板

php - SQL - 改进 JOIN 查询(​​需要很长时间才能加载)