pdox
                                
                                 pdox copied to clipboard
                                
                                    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>';