PHPackages                             mlevent/pdb - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. mlevent/pdb

ActiveLibrary[Database &amp; ORM](/categories/database)

mlevent/pdb
===========

PHP için özelleştirilmiş PDO sınıfı

v1.0.8(4y ago)10342[1 issues](https://github.com/mlevent/pdb/issues)MITPHPPHP &gt;=7.2.5

Since Jul 25Pushed 3y ago3 watchersCompare

[ Source](https://github.com/mlevent/pdb)[ Packagist](https://packagist.org/packages/mlevent/pdb)[ RSS](/packages/mlevent-pdb/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (10)DependenciesVersions (10)Used By (0)

⛓️ PDB
======

[](#️-pdb)

PHP için PDO query-builder

[![](https://camo.githubusercontent.com/1d1d88256ef2e18bf820d8e79a96a1e20709435ac66d92bfde33482e4f746029/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d6c6576656e742f7064623f7374796c653d706c6173746963)](https://camo.githubusercontent.com/1d1d88256ef2e18bf820d8e79a96a1e20709435ac66d92bfde33482e4f746029/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d6c6576656e742f7064623f7374796c653d706c6173746963)[![](https://camo.githubusercontent.com/f99a1b57cba76538e6acddfdca96a40d211498165c71e10cc6740d72ebd45c6c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6d6c6576656e742f7064623f7374796c653d706c6173746963)](https://camo.githubusercontent.com/f99a1b57cba76538e6acddfdca96a40d211498165c71e10cc6740d72ebd45c6c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6d6c6576656e742f7064623f7374796c653d706c6173746963)[![](https://camo.githubusercontent.com/390458f9eff3955f928f397da1827e2fe8aa4742618aedebe78acadf3a98d454/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f6d6c6576656e742f7064623f7374796c653d706c6173746963)](https://camo.githubusercontent.com/390458f9eff3955f928f397da1827e2fe8aa4742618aedebe78acadf3a98d454/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f6d6c6576656e742f7064623f7374796c653d706c6173746963)[![](https://camo.githubusercontent.com/3afe5b6ae3ec79b64879fb2728aeff829316f4504636932f8b73cbb35480d830/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f6d6c6576656e742f7064623f7374796c653d706c6173746963)](https://camo.githubusercontent.com/3afe5b6ae3ec79b64879fb2728aeff829316f4504636932f8b73cbb35480d830/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f6d6c6576656e742f7064623f7374796c653d706c6173746963)[![](https://camo.githubusercontent.com/508789f53a084447124a9150b877cf6b644d35b3c258fc6ef690473fa567629f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6d6c6576656e742f7064623f7374796c653d706c6173746963)](https://camo.githubusercontent.com/508789f53a084447124a9150b877cf6b644d35b3c258fc6ef690473fa567629f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6d6c6576656e742f7064623f7374796c653d706c6173746963)[![](https://camo.githubusercontent.com/6b5b050cf4a1d9a252436bdc0b6c29507aeaf72d9de96b5110fa607825c937ce/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f6d6c6576656e742f7064623f7374796c653d706c6173746963)](https://camo.githubusercontent.com/6b5b050cf4a1d9a252436bdc0b6c29507aeaf72d9de96b5110fa607825c937ce/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f6d6c6576656e742f7064623f7374796c653d706c6173746963)

Kurulum
-------

[](#kurulum)

🛠️ Paketi composer ile projenize dahil edin;

```
composer require mlevent/pdb
```

### Örnek Kullanım

[](#örnek-kullanım)

```
use Mlevent\Pdb;

/**
 * MYSQL
 */
$db = new Pdb([
    'database' => 'ecommerce',
    'username' => 'root',
    'password' => 'test'
]);

/**
 * SQLITE
 */
$db = new Pdb([
    'driver'   => 'sqlite',
    'database' => 'ecommerce.sqlite'
]);
```

### Composer Kullanmadan

[](#composer-kullanmadan)

Yeni bir dizin oluşturarak `src` klasörü altındaki tüm dosyaları içine kopyalayın ve `autoload.php` dosyasını require ile sayfaya dahil ederek sınıfı başlatın.

```
require '{pdb_dosyalarinin_bulundugu_dizin}/autoload.php';

use Mlevent\Pdb;

$db = new Pdb([
    'database' => 'ecommerce',
    'username' => 'root',
    'password' => 'test'
]);
```

### Yapılandırma

[](#yapılandırma)

Varsayılan yapılandırma ayarları:

```
[
    'host'      => 'localhost',
    'driver'    => 'mysql',
    'database'  => '',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'debug'     => false,
    'cacheTime' => 60,
    'cachePath' => __DIR__ . '/Cache'
]
```

Şu anda kullanılabilir durumda olan driver listesi:

- Mysql
- Sqlite (test aşamasında)

---

Fetch
-----

[](#fetch)

Kullanılabilecek metodlar: `get()`, `first()`, `value()`, `pluck()`, `find()`

### Get

[](#get)

Bu yöntem varsayılan olarak bir stdClass nesnesi döndürür. Sonuçlara `Array` formatında ulaşmak isterseniz `toArray()` metoduna göz atın.

```
$products = $db->get('products');

foreach ($products as $product) {
    echo $product->name;
}
```

- `get()`
- `get('products')`

---

Bir SQL sorgusu oluşturup, bu sorguyu çalıştırmak için metodları zincir şeklinde kullanabilirsiniz.

```
$query = $db->select('id, name, code, price, stock')
            ->table('products')
            ->between('price', 900, 1500)
            ->grouped( function($q) {
                $q->like(['code', 'name'], '%iphone%')
                  ->orWhere('featured', 1);
            })
            ->in('categoryId', [1, 2, 3, 4, 5, 6])
            ->order('price')
            ->get();
```

Yukarıdaki zincirin sorgu çıktısı şu şekilde olacaktır:

```
SELECT
  id, name, code, price, stock
FROM
  products
WHERE
  price BETWEEN ? AND ?
  AND ((name LIKE ? OR code LIKE ?) OR featured=?)
  AND categoryId IN(?,?,?,?,?,?)
ORDER BY
  price DESC
```

### toArray()

[](#toarray)

Sonuçlara `Array` formatında ulaşmak için kullanılır.

```
$products = $db->table('products')
               ->toArray()
               ->get();

foreach ($products as $product) {
    echo $product['name'];
}
```

### toJson()

[](#tojson)

Sonuçlara `Json` formatında ulaşmak için kullanılır.

```
$products = $db->table('products')
               ->toJson()
               ->get();
```

### First

[](#first)

Bir tablodan sadece tek bir satır almanız gerekiyorsa, `first()` yöntemini kullanabilirsiniz. Bu yöntem, varsayılan olarak tek bir stdClass nesnesi döndürür.

```
$user = $db->table('users')
           ->first();

echo $user->email;
```

### Value

[](#value)

Bir satırın tamamına ihtiyacınız yoksa, value yöntemini kullanarak bir kayıttan tek bir değer çıkarabilirsiniz.

```
$email = $db->table('users')
            ->where('name', 'Walter')
            ->value('email');

echo $email;
```

### Pluck

[](#pluck)

Tek bir sütunun değerlerini içeren bir dizi istiyorsanız `pluck()` yöntemini kullanabilirsiniz.

```
$pluck = $db->table('products')
            ->pluck('name');
```

```
Array
(
    [0] => Apple Iphone X 128 GB
    [1] => Apple Iphone X 256 GB
    [2] => Apple Iphone X 512 GB
)
```

`pluck()` metoduna ikinci bir parametre göndererek, elde edilen dizinin anahtarları olarak kullanılmasını istediğiniz sütunu belirtebilirsiniz:

```
$pluck = $db->table('products')
            ->pluck('name', 'code');
```

```
Array
(
    [APPLEX128] => Apple Iphone X 128 GB
    [APPLEX256] => Apple Iphone X 256 GB
    [APPLEX512] => Apple Iphone X 512 GB
)
```

### Find

[](#find)

Birincil anahtarla eşleşen kaydı döndürür.

```
$user = $db->table('users')
           ->find(15);

echo $user->name;
```

```
SELECT * FROM users WHERE id=?
```

- `find(15)`
- `find(15, 'products')`

### Total

[](#total)

Toplam satır sayısına ulaşmak için kullanılır.

```
$total = $db->table('users')
            ->where('userGroup', 'Admin')
            ->total();
```

- `total()`
- `total('users')`

### rowCount()

[](#rowcount)

Etkilenen satır sayısı veya okunan satır sayısına ulaşmak için kullanılır.

```
echo $db->rowCount();
```

### lastInsertId()

[](#lastinsertid)

Insert işlemlerinde kaydedilen son satırın birincil anahtarını döndürür.

```
echo $db->lastInsertId();
```

---

Raw Query
---------

[](#raw-query)

Salt sql sorgusu çalıştırmak için kullanılır.

### Raw Fecth

[](#raw-fecth)

```
$results = $db->raw('SELECT * FROM products WHERE active = ? AND MONTH(created) = MONTH(NOW())', 1)
              ->get();
```

### Raw Exec

[](#raw-exec)

```
$update = $db->raw('UPDATE payments SET active = !active WHERE status = ?', ['paid'])
             ->exec();
```

---

Pager
-----

[](#pager)

Parametre olarak sayfa başına listelenecek kayıt sayısı gönderilmelidir. `pager()` metodu salt sorgularda çalışmaz.

```
$posts = $db->table('posts')
            ->pager(25)
            ->get();

foreach ($posts as $post) {
    echo $post->title;
}

echo $db->pagerLinks();
```

`pager()` fonksiyonu 2 parametre alır. İlk parametre sayfa başına listelenecek kayıt sayısı, İkinci parametre sayfa bilgisinin aktarılacağı `$_GET` parametresidir. Örneğin link yapısı `?page=3` şeklinde kurgulanacaksa, örnek kullanım şu şekilde olmalıdır;

```
$db->pager(25, 'page');
```

### pagerLinks()

[](#pagerlinks)

Linklerin çıktısını almak için kullanılır.

```
echo $db->pagerLinks();
```

- `«` `‹` `1` `2` `3` `4` `5` `6` `...` `›` `»`

### pagerData()

[](#pagerdata)

Toplam sonuç, sayfa sayısı, limit, ofset ve aktif sayfa gibi bilgilere ulaşmak için kullanılır.

```
var_dump($db->pagerData());
```

```
Array
(
    [count] => 255
    [limit] => 10
    [offset] => 0
    [total] => 26
    [current] => 1
)
```

### setPagerTemplate()

[](#setpagertemplate)

Link çıktısına ait HTML şablonu düzenlemek için kullanılır.

```
$db->setPagerTemplate('

            {text}

    ');
```

---

Cache
-----

[](#cache)

Sonuçları önbelleğe almak için kullanılır. Çok sık değişmesi gerekmeyen ve yoğun kullanımda performans sorunu oluşturabilecek sorgular için kullanılabilir.

### Disk Cache

[](#disk-cache)

`comments` tablosundaki verileri mysql'den okur ve diske kaydeder. Sonuçlar 30 saniye boyunca diskten okunur.

```
$results = $db->cache(30)->get('comments');
```

`fromDisk()` metodu; son sorgu diskten okunuyorsa `true`, mysql'den okunuyorsa `false` döner.

### Redis Cache

[](#redis-cache)

`comments` tablosundaki verileri mysql'den okur ve redis veritabanına kayder. Sonuçlar 30 saniye boyunca Redis üzerinden okunur.

```
$results = $db->redis(30)->get('comments');
```

`fromRedis()` metodu; son sorgu Redisten okunuyorsa `true`, mysql'den okunuyorsa `false` döner.

```
$redisConnect = (function(){
    $redis = new \Redis();
    $redis->connect('127.0.0.1', 6379, 1, NULL, 0, 0, ['auth' => ['default', '']]);
    return $redis;
});

$db->setRedis($redisConnect());
```

`setRedis()` metodu ile Redis sınıfı dışarıdan dahil edilebilir.

> Not: Redis ile önbellekleme işlemi yapabilmek için sunucunuzda Redis yüklü olması gerekir.

---

Insert
------

[](#insert)

Tabloya yeni bir satır eklemek için kullanılır. `insert()` metoduyla tek veya birden fazla kayıt eklenebilir.

### Tekli Kayıt

[](#tekli-kayıt)

```
$db->table('products')->insert([
    'name'  => 'Apple Iphone X 128 Gb',
    'code'  => 'APPLEX128',
    'price' => '999.9'
]);
```

### Çoklu Kayıt

[](#çoklu-kayıt)

```
$db->table('products')->insert([
    ['name' => 'Apple Iphone X 128 Gb', 'code' => 'APPLEX128', 'price' => '999.9'],
    ['name' => 'Apple Iphone X 256 Gb', 'code' => 'APPLEX256', 'price' => '1149.9'],
    ['name' => 'Apple Iphone X 512 Gb', 'code' => 'APPLEX512', 'price' => '1349.9']
]);
```

Son kaydedilen satırın birincil anahtarına ulaşmak için `lastInsertId()` metodunu, toplam etkilenen satır sayısı için `rowCount()` metodunu kullanabilirsiniz.

### Upsert

[](#upsert)

```
$db->table('products')->upsert([
    'name'  => 'Apple Iphone X 128 Gb',
    'code'  => 'APPLEX128',
    'price' => '999.9'
]);
```

Benzersiz anahtarlara eşleşen veri bulunursa var olan kayıt güncellenir, yoksa yeni kayıt eklenir.

- Henüz Sqlite desteği yok.

### Insert Ignore

[](#insert-ignore)

```
$db->table('products')->insertIgnore([
    'name'  => 'Apple Iphone X 128 Gb',
    'code'  => 'APPLEX128',
    'price' => '999.9'
]);
```

Benzersiz anahtarlara eşleşen veri bulunursa kayıt eklenmez, yoksa yeni kayıt eklenir.

### Insert Replace

[](#insert-replace)

```
$db->table('products')->insertReplace([
    'name'  => 'Apple Iphone X 128 Gb',
    'code'  => 'APPLEX128',
    'price' => '999.9'
]);
```

Benzersiz anahtarlara eşleşen veri bulunursa var olan kayıt silinir ve yeni kayıt eklenir, yoksa yeni kayıt eklenir. Her replace işleminde `auto_increment` olarak tanımlanan birincil anahtara (Genellikle ID) ait değer değişir. Değerin korunmasını istiyorsanız `upsert()` metodunu kullanmanız önerilir.

---

Update
------

[](#update)

Bir veya birden fazla kaydı güncellemek için kullanılır.

```
$update = $db->table('products')
             ->where('id', 11255)
             ->update(['active' => 1]);
```

- Etkilenen satır sayısı döner.

### Touch

[](#touch)

`active` sütunu `1` ise `0`, `0` ise `1` değerini alır.

```
$touch = $db->table('products')
            ->touch('active');
```

- `touch('active', 'products')`

### Increment

[](#increment)

`hit` sütunu `1` veya gönderilen değer kadar artar.

```
$increment = $db->table('posts')
                ->where('slug', 'whats-new-in-laravel-8')
                ->increment('hit');
```

- `increment('hit')`
- `increment('hit', 5)`

### Decrement

[](#decrement)

`hit` sütunu `1` veya gönderilen değer kadar azalır.

```
$increment = $db->table('posts')
                ->where('slug', 'whats-new-in-laravel-8')
                ->decrement('hit');
```

- `decrement('hit')`
- `decrement('hit', 5)`

---

Delete
------

[](#delete)

Bir veya birden fazla kaydı silmek için kullanılır.

```
$delete = $db->in('id', [321, 412, 324, 142])
             ->delete('products');
```

- Etkilenen satır sayısı döner.

---

Filter
------

[](#filter)

Gönderilen veriyi tablodaki sütunlarla karşılaştırır ve yanlış/fazla veriyi otomatik olarak temizler. `insert()`, `insertIgnore()`, `insertReplace()`, `upsert()`, `update()` metodlarıyla birlikte kullanılabilir.

PrimaryNot NullNot NullNot Nullenum('Male', 'Female')idnameemailpasswordgender`users` adında bir tablomuz olduğunu ve yukarıdaki sütunlardan oluştuğunu varsayalım.

```
$db->table('users')->filter()->insert([
    'username' => 'walterbishop',
    'email'    => 'walter@bishop.com',
    'password' => 'U7!hsjlIus',
    'gender'   => 'Male',
    'fullname' => 'Walter Bishop'
]);
```

- `filter()` metodu users tablosunda `fullname` sütununu bulamadığı için bu veriyi otomatik temizleyip hatasız bir şekilde kayıt oluşturulmasını sağlar.

```
$db->table('users')->filter()->insert($_POST);
```

- `$_POST` ile gönderilen formlar için örnek bir kullanım şekli.

Validate
--------

[](#validate)

Bu metot şu an için yalnızca; gönderilen veriyi filtreler, boş gönderilen alanları varsayılan değerleriyle doldurur, not null ve enum kontrolleri yapar.

```
try{
    $db->table('users')->validate()->insert([
        'username' => 'walterbishop',
        'email'    => 'walter@bishop.com',
        'password' => 'U7!hsjlIus',
        'gender'   => 'Elephant'
    ]);
} catch(Exception $e){
    echo $e->getMessage();
}
```

- `gender` sütununda tanımlı enum değerleri arasında `Elephant` olmadığı için hata döner ve kayıt eklenmez.

---

Transaction
-----------

[](#transaction)

Metodlar: `inTransaction()`, `beginTransaction()`, `commit()`, `rollBack()`

```
try {

    $db->beginTransaction();

    $db->table('products')->insert([
        'name'  => 'Apple Iphone X 128 Gb',
        'code'  => 'APPLEX128',
        'price' => '999.9'
    ]);

    $db->table('images')->insert([
        'productId' => $db->lastInsertId(),
        'imageName' => 'foo.jpg'
    ]);

    $db->commit();

} catch(Exception $e) {

    $db->rollBack();
}
```

---

Select
------

[](#select)

```
$db->select('id, name, code, price')...
```

- `select('id, name')`
- `select(['id', 'name', ...])`

> Metod kullanılmazsa varsayılan olarak `*` ile tüm sütunlar seçilir.

### Select Functions

[](#select-functions)

Metodlar: `count()`, `sum()`, `avg()`, `min()`, `max()`

```
$db->sum('amount')...
```

- `sum('amount')`
- `sum('amount', 'totalAmount')`

Table
-----

[](#table)

`table()` ve `from()` metodu aynı işlevi görür.

```
$db->table('products')...
```

- `table('products')`
- `table(['products as p', 'images as i'])`

Join
----

[](#join)

Metodlar: `leftJoin()`, `rightJoin()`, `innerJoin()`, `leftOuterJoin()`, `rightOuterJoin()`, `fullOuterJoin()`

```
$db->table('products as p')
   ->leftJoin('images as i', 'p.id', 'i.productId')
   ->get();
```

- `leftJoin('images', 'products.id', 'images.productId')`
- `leftJoin('images', 'products.id = images.productId')`
- `leftJoin('images ON products.id = images.productId')`

### joinNode()

[](#joinnode)

İlişki kurulan tabloyla sonuç içerisinde yeni bir child element oluşturmak için `joinNode()` yöntemini kullanabilirsiniz.

```
$basketData = $db->table('users AS u')
                 ->select('u.*')
                 ->leftJoin('cart AS c', 'c.userId', 'u.id')
                 ->joinNode('cartData', ['name' => 'c.productName', 'quantity' => 'c.quantity'])
                 ->group('u.id')
                 ->first();
```

```
stdClass Object
(
    [id] => 159
    [fullName] => John Doe
    [email] => john@doe.com
    [cartData] => Array
        (
            [0] => stdClass Object
                (
                    [name] => Apple Iphone X 128 GB
                    [quantity] => 1
                )

            [1] => stdClass Object
                (
                    [name] => Apple Iphone X 256 GB
                    [quantity] => 1
                )

        )
)
```

Where
-----

[](#where)

Metodlar: `where()`, `orWhere()`, `notWhere()`, `orNotWhere()`

```
$db->where('id', 32886)...
```

- `where('active', 1)`
- `where('stock >= ? AND active = ?', [2, 1])`
- `where(['stock > ?', 'active > ?'], [2, 1])`
- `where(['stock' => 2, 'active' => 1])`
- `where('stock >= 2 AND active = 1 AND MONTH(updated) = MONTH(NOW())')`

Group Where
-----------

[](#group-where)

```
$db->table('products')
   ->like('name', '%iphone%')
   ->grouped(function($q){
        $q->in('brandId', [1, 2, 3])->orIn('categoryId', [1, 2, 3]);
   })->get();
```

- `SELECT * FROM products WHERE name LIKE ? AND (brandId IN(?,?,?) OR categoryId IN(?,?,?))`

Between
-------

[](#between)

Metodlar: `between()`, `orBetween()`, `notBetween()`, `orNotBetween()`

```
$db->between('price', 50, 250)...
```

Is Null - Not Null
------------------

[](#is-null---not-null)

Metodlar: `isNull()`, `orIsNull()`, `notNull()`, `orNotNull()`

```
$db->isNull('code')...
```

- `isNull('slug')`
- `isNull(['slug', ...])`

In - Not In
-----------

[](#in---not-in)

Metodlar: `in()`, `orIn()`, `notIn()`, `orNotIn()`

```
$db->in('id', [33922, 31221, 45344, 35444])...
```

Find In Set
-----------

[](#find-in-set)

Metodlar: `findInSet()`, `orFindInSet()`, `notFindInSet()`, `orNotFindInSet()`

```
$db->findInSet('categoryId', 139)...
```

Like - Not Like
---------------

[](#like---not-like)

Metodlar: `like()`, `orLike()`, `notLike()`, `orNotlike()`

```
$db->like('name', '%Apple%')...
```

- `like('name')`
- `like(['name', ...])`

Order
-----

[](#order)

Varsayılan olarak `desc` seçilir.

```
$db->order('id')...
```

- `order('id')`
- `order('id', 'asc')`
- `order('id desc, name asc')`
- `order('rand()')`

Group
-----

[](#group)

```
$db->group('id')...
```

- `group('id')`
- `group(['id', 'name'])`

Having
------

[](#having)

```
$db->having('stock', 5)...
```

- `having('stock', 5)`
- `having('stock > 5')`
- `having('stock > ?', 5)`

Limit - Offset
--------------

[](#limit---offset)

Limit, Offset ve Sayfalama işlemleri için kullanılır.

```
$db->limit(100)...
$db->limit(100, 0)...
$db->limit(100)->offset(0)...
```

History
-------

[](#history)

### queryHistory()

[](#queryhistory)

Sorgu listesine ulaşmak için kullanılır.

```
var_dump($db->queryHistory());
```

```
Array
(
    [0] => Array
        (
            [query] => SELECT id, name FROM products WHERE code = ? AND active = ? ORDER BY id desc
            [params] => Array
                (
                    [0] => 34066
                    [1] => 1
                )

            [from] => redis
        )
)
```

### lastQuery()

[](#lastquery)

Son sorguyu görüntülemek için kullanılır.

```
echo $db->lastQuery();
```

- `SELECT id, name FROM products WHERE code = ? AND active = ? ORDER BY id desc`

### lastParams()

[](#lastparams)

Son sorguyu ait parametreleri görmek için kullanılır.

```
var_dump($db->lastParams());
```

```
Array
(
    [0] => 34066,
    [1] => 1
)
```

### queryCount()

[](#querycount)

Toplam sorgu sayısına ulaşmak için kullanılır.

```
echo $db->queryCount();
```

- `1`

---

Structure
---------

[](#structure)

Yapısal sorgular için kullanılır.

```
$db->repair('sessions');
```

Metodlar: `truncate()`, `drop()`, `optimize()`, `analyze()`, `check()`, `checksum()`, `repair()`

Contributors
------------

[](#contributors)

- [mlevent](https://github.com/mlevent) Mert Levent

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance18

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~13 days

Total

9

Last Release

1649d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/05bb9553ee107aea561f3d6b82d5b54bb3172b5800aaf6bc40f4998d62c7d297?d=identicon)[mlevent](/maintainers/mlevent)

---

Top Contributors

[![mlevent](https://avatars.githubusercontent.com/u/5323354?v=4)](https://github.com/mlevent "mlevent (222 commits)")

---

Tags

cachedatabasemysqlpaginationpdophpquery-builderredissqliteveritabaniphpdatabasepdorediscacheveritabani

### Embed Badge

![Health badge](/badges/mlevent-pdb/health.svg)

```
[![Health](https://phpackages.com/badges/mlevent-pdb/health.svg)](https://phpackages.com/packages/mlevent-pdb)
```

###  Alternatives

[spiritix/lada-cache

A Redis based, automated and scalable database caching layer for Laravel

591444.8k2](/packages/spiritix-lada-cache)[clouddueling/mysqldump-php

PHP version of mysqldump cli that comes with MySQL

1.3k22.9k](/packages/clouddueling-mysqldump-php)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
