pdox
pdox copied to clipboard
fetchAll(PDO::FETCH_COLUMN) gibi getlAll()
Merhaba. Sadece tek sütundaki verileri dizi olarak alabilmek istiyorum. Bunu nasıl yapabilirim?
PDO'nun ...->fetchAll(PDO::FETCH_COLUMN) fonksiyonu gibi sonuç döndürmesini istiyorum.
Örnek olarak şu şekilde bir tablo olsun:
| id | title |
|---|---|
| 1 | title1 |
| 2 | title2 |
| 3 | title3 |
Ben title sütunundaki verileri şu şekilde istiyorum:
$array = ["title1", "title2", "title3"];
Şu anda ...->select("title")->getAll() kullandığımda "array of objects" döndürüyor.
Eğer şu an mümkün değilse belki ...->getCol() gibi bir fonksiyon eklenerek bu sağlanabilir.
Merhabalar,
->getAll yerine, ->fetchAll() kullanabilirsiniz. İlk parametre olarak da istediğiniz fetch type'ı belirtebilirsiniz.
Merhabalar,
->getAllyerine,->fetchAll()kullanabilirsiniz. İlk parametre olarak da istediÄiniz fetch type'ı belirtebilirsiniz.
getAll()'u, sadece ->fetchAll() ile deÄiÅtirmeyi denemiÅtim. DiÄer kısımlara dokunmadan sadece bunu deÄiÅtirince hiç sonuç dönmüyor.
PHP 8.0.6 üzerinde kütüphanenin 1.5.0 sürümünü kullanıyorum.
Test tablosu
| id | title |
|---|---|
| 1 | Renk |
| 2 | Beden |
CREATE TABLE `attrs` (
`id` int UNSIGNED NOT NULL,
`title` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
select('title')->getAll() örneÄi:
Kod:
$db = new \Buki\Pdox($config);
$records = $db->table('attrs')
->select('title')
->getAll();
echo '<pre>';
var_dump($records);
echo '</pre>';
Ãıktı:
array(2) {
[0]=>
object(stdClass)#5 (1) {
["title"]=>
string(4) "Renk"
}
[1]=>
object(stdClass)#6 (1) {
["title"]=>
string(5) "Beden"
}
}
select('title')->fetchAll(PDO::FETCH_COLUMN) örneÄi:
Kod:
$db = new \Buki\Pdox($config);
$records = $db->table('attrs')
->select('title')
->fetchAll(PDO::FETCH_COLUMN);
echo '<pre>';
var_dump($records);
echo '</pre>';
Ãıktı:
NULL
PDO fetchAll(PDO::FETCH_COLUMN) örneÄi:
Kod:
$records = $pdo->prepare("SELECT title FROM attrs");
$records->execute();
$records = $records->fetchAll(PDO::FETCH_COLUMN);
echo '<pre>';
var_dump($records);
echo '</pre>';
Ãıktı:
array(2) {
[0]=>
string(4) "Renk"
[1]=>
string(5) "Beden"
}
Selamlar,
Şunu dener misininiz?
$records = $db->table('attrs')
->select('title')
->fetchAll('array');
Merhaba. Gecikme için üzgünüm.
Geçen zamanda yeni sürüm yayınlanmış, ona güncelleyerek denemeyi yaptım.
PDOx sürümü: 1.6.0 PHP sürümü: 8.0.10
->fetchAll('array'); denedim ancak yine NULL çıktısını alıyorum.
Tam kod:
$config = [
'driver' => 'mysql',
'host' => 'database',
'database' => 'myDockerDatabase',
'username' => 'docker',
'password' => 'docker',
'charset' => 'utf8',
'collation' => 'utf8_general_ci',
'prefix' => ''
];
$db = new \Buki\Pdox($config);
$records = $db->table('attrs')
->select('title')
->fetchAll('array');
echo '<pre>';
var_dump($records);
echo '</pre>';