Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fetchAll(PDO::FETCH_COLUMN) gibi getlAll() #94

Open
ozgurg opened this issue May 31, 2021 · 4 comments
Open

fetchAll(PDO::FETCH_COLUMN) gibi getlAll() #94

ozgurg opened this issue May 31, 2021 · 4 comments

Comments

@ozgurg
Copy link

ozgurg commented May 31, 2021

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.

@izniburak
Copy link
Owner

Merhabalar,
->getAll yerine, ->fetchAll() kullanabilirsiniz. İlk parametre olarak da istediğiniz fetch type'ı belirtebilirsiniz.

@ozgurg
Copy link
Author

ozgurg commented Jun 3, 2021

Merhabalar,
->getAll yerine, ->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"
}

@izniburak
Copy link
Owner

Selamlar,

Şunu dener misininiz?

$records = $db->table('attrs')
		->select('title')
		->fetchAll('array');

@ozgurg
Copy link
Author

ozgurg commented Sep 29, 2021

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>';

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants