我经常需要进行数据库查询,其中结果数组的键是 SQL 中指定的第一列的值(而不是键只是在填充数组时自动分配的增量数字) 。这是否可能无需事后手动重新处理数组?
我知道有 queryAll(PDO::FETCH_KEY_PAIR)
但这只适用于两列(数组值是单个数据库列,而不是所有剩余列的子数组)
所以,而不是:
array (
0 =>
array (
'id' => 6955,
'firstname' => 'John',
'lastname' => 'Doe',
'country' => 'United States',
),
1 =>
array (
'id' => 8588,
'firstname' => 'Helen',
'lastname' => 'Smith',
'country' => 'Denmark',
),
)
...我需要:
array (
6955 => array (
'firstname' => 'John',
'lastname' => 'Doe',
'country' => 'United States',
),
8588 => array (
'firstname' => 'Helen',
'lastname' => 'Smith',
'country' => 'Denmark',
),
)
它不一定是数组 - 它也可以由对象组成。重要的是结构。
最佳答案
您可以使用 indexBy()
(它不会跳过结果中所选的列,但我认为这不是问题)。
示例:
$query = (new \yii\db\Query())
->from('user')
->limit(10)
->indexBy('id')
->all();
returns [
100 => ['id' => 100, 'username' => '...', ...],
101 => [...],
103 => [...],
...
]
参见the guide了解更多信息。
关于php - Yii2:ActiveQuery 可以返回以 SQL 查询的第一列为键的数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38697360/