Saya ingin mendapatkan array nilai dari kolom id tabel Lelang. Jika ini adalah SQL mentah, saya akan menulis:
SELECT id FROM auction
Tetapi ketika saya melakukan ini dalam Ajaran dan melaksanakan:
$em->createQuery("SELECT a.id FROM Auction a")->getScalarResult();
Saya mendapatkan array seperti ini:
array(
array('id' => 1),
array('id' => 2),
)
Sebagai gantinya, saya ingin mendapatkan array seperti ini:
array(
1,
2
)
Bagaimana saya dapat melakukannya dengan menggunakan Doktrin?
php
doctrine-orm
Dawid Ohia
sumber
sumber
Mulai PHP 5.5 Anda dapat menggunakan array_column untuk menyelesaikan ini
sumber
Solusi yang lebih baik adalah menggunakan
PDO:FETCH_COLUMN
. Untuk melakukannya, Anda memerlukan hidrator khusus:Tambahkan ke Doktrin:
Dan Anda bisa menggunakannya seperti ini:
Info selengkapnya: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#custom-hydration-modes
sumber
Jawaban Ascarius memang elegan, tetapi waspadalah terhadap penggunaan memori!
array_map()
membuat salinan larik yang dilewati dan secara efektif menggandakan penggunaan memori. Jika Anda bekerja dengan ratusan ribu item array, ini bisa menjadi masalah. Sejak PHP 5.4 call-time pass by reference telah dihapus sehingga Anda tidak dapat melakukannyaDalam hal ini Anda bisa pergi dengan jelas
sumber
Saya pikir itu tidak mungkin dalam Doktrin. Cukup ubah larik hasil menjadi struktur data yang Anda inginkan menggunakan PHP:
sumber