1. ホーム
  2. php

[解決済み] 一次元のスカラー配列をdqlのクエリ結果として取得するには?

2022-06-20 12:11:38

質問

Auctionテーブルのidカラムから値の配列を取得したいです。 これが生のSQLであれば、私は書くでしょう。

SELECT id FROM auction

しかし、Doctrineでこれを行い、実行すると。

$em->createQuery("SELECT a.id FROM Auction a")->getScalarResult(); 

こんな感じの配列になります。

array(
    array('id' => 1),
    array('id' => 2),
)

代わりに、このような配列を取得したい。

array(
    1,
    2
)

Doctrine を使ってそれを行うにはどうしたらよいでしょうか?

どのように解決するのですか?

PHP 5.5

を使用することができます。 array_map を使用することができ、1つの配列に1つの項目しかないので、エレガントに 'current' をコールバックとして使うことができます。 クロージャ .

$result = $em->createQuery("SELECT a.id FROM Auction a")->getScalarResult();
$ids = array_map('current', $result);

参照 Petr Sobotka氏の回答を以下に示します。 を参照してください。

PHP >= 5.5

として jcbwlkr さんの回答は以下の通りです。 を使用することをお勧めします。 array_column .