【问题标题】:Yii2: Can ActiveQuery return array where the key is the first column of the SQL query?Yii2:ActiveQuery 可以返回键是 SQL 查询的第一列的数组吗?
【发布时间】:2016-08-01 11:11:37
【问题描述】:

我经常需要进行数据库查询,其中结果数组的键是 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',
  ),
)

它不一定是数组——它也可以由对象组成。只是结构很重要。

【问题讨论】:

  • 你能举一个预期结果的例子吗?

标签: php database activerecord pdo yii2


【解决方案1】:

您可以为此使用indexBy()(它不会跳过结果中选择的列,但我认为这不是问题)。

例子:

$query = (new \yii\db\Query())
    ->from('user')
    ->limit(10)
    ->indexBy('id')
    ->all();

returns [
    100 => ['id' => 100, 'username' => '...', ...], 
    101 => [...], 
    103 => [...], 
    ...
]

请参阅the guide 了解更多信息。

【讨论】:

    猜你喜欢
    • 2021-05-18
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 2015-08-03
    相关资源
    最近更新 更多