{"id":14972145,"url":"https://github.com/mlevent/pdb","last_synced_at":"2025-10-26T17:31:26.349Z","repository":{"id":43437936,"uuid":"383679856","full_name":"mlevent/pdb","owner":"mlevent","description":"PHP için PDO Query-Builder","archived":false,"fork":false,"pushed_at":"2023-01-09T02:38:36.000Z","size":145,"stargazers_count":9,"open_issues_count":1,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-31T21:52:56.899Z","etag":null,"topics":["cache","database","mysql","pagination","pdo","php","query-builder","redis","sqlite","veritabani"],"latest_commit_sha":null,"homepage":"https://mlevent.github.io/pdb","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mlevent.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-07-07T05:08:23.000Z","updated_at":"2024-08-14T03:32:34.000Z","dependencies_parsed_at":"2023-02-08T08:30:39.292Z","dependency_job_id":null,"html_url":"https://github.com/mlevent/pdb","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlevent%2Fpdb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlevent%2Fpdb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlevent%2Fpdb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlevent%2Fpdb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mlevent","download_url":"https://codeload.github.com/mlevent/pdb/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238375233,"owners_count":19461569,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cache","database","mysql","pagination","pdo","php","query-builder","redis","sqlite","veritabani"],"created_at":"2024-09-24T13:46:27.217Z","updated_at":"2025-10-26T17:31:26.058Z","avatar_url":"https://github.com/mlevent.png","language":"PHP","readme":"\u003ch1 align=\"center\"\u003e⛓️ PDB\u003c/h1\u003e\n\u003cp align=\"center\"\u003ePHP için PDO query-builder\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://img.shields.io/packagist/v/mlevent/pdb?style=plastic\"/\u003e\n\u003cimg src=\"https://img.shields.io/github/license/mlevent/pdb?style=plastic\"/\u003e\n\u003cimg src=\"https://img.shields.io/github/issues/mlevent/pdb?style=plastic\"/\u003e\n\u003cimg src=\"https://img.shields.io/github/last-commit/mlevent/pdb?style=plastic\"/\u003e\n\u003cimg src=\"https://img.shields.io/github/stars/mlevent/pdb?style=plastic\"/\u003e\n\u003cimg src=\"https://img.shields.io/github/forks/mlevent/pdb?style=plastic\"/\u003e\n\u003c/p\u003e\n\n## Kurulum\n\n🛠️ Paketi composer ile projenize dahil edin;\n\n```bash\ncomposer require mlevent/pdb\n```\n\n### Örnek Kullanım\n\n```php\nuse Mlevent\\Pdb;\n\n/**\n * MYSQL\n */\n$db = new Pdb([\n    'database' =\u003e 'ecommerce',\n    'username' =\u003e 'root',\n    'password' =\u003e 'test'\n]);\n\n/**\n * SQLITE\n */\n$db = new Pdb([\n    'driver'   =\u003e 'sqlite',\n    'database' =\u003e 'ecommerce.sqlite'\n]);\n```\n\n### Composer Kullanmadan\n\nYeni 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.\n\n```php\nrequire '{pdb_dosyalarinin_bulundugu_dizin}/autoload.php';\n\nuse Mlevent\\Pdb;\n\n$db = new Pdb([\n    'database' =\u003e 'ecommerce',\n    'username' =\u003e 'root',\n    'password' =\u003e 'test'\n]);\n```\n\n### Yapılandırma\n\nVarsayılan yapılandırma ayarları:\n\n```php\n[\n    'host'      =\u003e 'localhost',\n    'driver'    =\u003e 'mysql',\n    'database'  =\u003e '',\n    'username'  =\u003e 'root',\n    'password'  =\u003e '',\n    'charset'   =\u003e 'utf8',\n    'collation' =\u003e 'utf8_unicode_ci',\n    'debug'     =\u003e false,\n    'cacheTime' =\u003e 60,\n    'cachePath' =\u003e __DIR__ . '/Cache'\n]\n```\n\nŞu anda kullanılabilir durumda olan driver listesi:\n\n-   Mysql\n-   Sqlite (test aşamasında)\n\n---\n\n## Fetch\n\nKullanılabilecek metodlar: `get()`, `first()`, `value()`, `pluck()`, `find()`\n\n### Get\n\nBu 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.\n\n```php\n$products = $db-\u003eget('products');\n\nforeach ($products as $product) {\n    echo $product-\u003ename;\n}\n```\n\n-   `get()`\n-   `get('products')`\n\n---\n\nBir SQL sorgusu oluşturup, bu sorguyu çalıştırmak için metodları zincir şeklinde kullanabilirsiniz.\n\n```php\n$query = $db-\u003eselect('id, name, code, price, stock')\n            -\u003etable('products')\n            -\u003ebetween('price', 900, 1500)\n            -\u003egrouped( function($q) {\n                $q-\u003elike(['code', 'name'], '%iphone%')\n                  -\u003eorWhere('featured', 1);\n            })\n            -\u003ein('categoryId', [1, 2, 3, 4, 5, 6])\n            -\u003eorder('price')\n            -\u003eget();\n```\n\nYukarıdaki zincirin sorgu çıktısı şu şekilde olacaktır:\n\n```sql\nSELECT\n  id, name, code, price, stock\nFROM\n  products\nWHERE\n  price BETWEEN ? AND ?\n  AND ((name LIKE ? OR code LIKE ?) OR featured=?)\n  AND categoryId IN(?,?,?,?,?,?)\nORDER BY\n  price DESC\n```\n\n### toArray()\n\nSonuçlara `Array` formatında ulaşmak için kullanılır.\n\n```php\n$products = $db-\u003etable('products')\n               -\u003etoArray()\n               -\u003eget();\n\nforeach ($products as $product) {\n    echo $product['name'];\n}\n```\n\n### toJson()\n\nSonuçlara `Json` formatında ulaşmak için kullanılır.\n\n```php\n$products = $db-\u003etable('products')\n               -\u003etoJson()\n               -\u003eget();\n```\n\n### First\n\nBir 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.\n\n```php\n$user = $db-\u003etable('users')\n           -\u003efirst();\n\necho $user-\u003eemail;\n```\n\n### Value\n\nBir satırın tamamına ihtiyacınız yoksa, value yöntemini kullanarak bir kayıttan tek bir değer çıkarabilirsiniz.\n\n```php\n$email = $db-\u003etable('users')\n            -\u003ewhere('name', 'Walter')\n            -\u003evalue('email');\n\necho $email;\n```\n\n### Pluck\n\nTek bir sütunun değerlerini içeren bir dizi istiyorsanız `pluck()` yöntemini kullanabilirsiniz.\n\n```php\n$pluck = $db-\u003etable('products')\n            -\u003epluck('name');\n```\n\n```php\nArray\n(\n    [0] =\u003e Apple Iphone X 128 GB\n    [1] =\u003e Apple Iphone X 256 GB\n    [2] =\u003e Apple Iphone X 512 GB\n)\n```\n\n`pluck()` metoduna ikinci bir parametre göndererek, elde edilen dizinin anahtarları olarak kullanılmasını istediğiniz sütunu belirtebilirsiniz:\n\n```php\n$pluck = $db-\u003etable('products')\n            -\u003epluck('name', 'code');\n```\n\n```php\nArray\n(\n    [APPLEX128] =\u003e Apple Iphone X 128 GB\n    [APPLEX256] =\u003e Apple Iphone X 256 GB\n    [APPLEX512] =\u003e Apple Iphone X 512 GB\n)\n```\n\n### Find\n\nBirincil anahtarla eşleşen kaydı döndürür.\n\n```php\n$user = $db-\u003etable('users')\n           -\u003efind(15);\n\necho $user-\u003ename;\n```\n\n```sql\nSELECT * FROM users WHERE id=?\n```\n\n-   `find(15)`\n-   `find(15, 'products')`\n\n### Total\n\nToplam satır sayısına ulaşmak için kullanılır.\n\n```php\n$total = $db-\u003etable('users')\n            -\u003ewhere('userGroup', 'Admin')\n            -\u003etotal();\n```\n\n-   `total()`\n-   `total('users')`\n\n### rowCount()\n\nEtkilenen satır sayısı veya okunan satır sayısına ulaşmak için kullanılır.\n\n```php\necho $db-\u003erowCount();\n```\n\n### lastInsertId()\n\nInsert işlemlerinde kaydedilen son satırın birincil anahtarını döndürür.\n\n```php\necho $db-\u003elastInsertId();\n```\n\n---\n\n## Raw Query\n\nSalt sql sorgusu çalıştırmak için kullanılır.\n\n### Raw Fecth\n\n```php\n$results = $db-\u003eraw('SELECT * FROM products WHERE active = ? AND MONTH(created) = MONTH(NOW())', 1)\n              -\u003eget();\n```\n\n### Raw Exec\n\n```php\n$update = $db-\u003eraw('UPDATE payments SET active = !active WHERE status = ?', ['paid'])\n             -\u003eexec();\n```\n\n---\n\n## Pager\n\nParametre olarak sayfa başına listelenecek kayıt sayısı gönderilmelidir. `pager()` metodu salt sorgularda çalışmaz.\n\n```php\n$posts = $db-\u003etable('posts')\n            -\u003epager(25)\n            -\u003eget();\n\nforeach ($posts as $post) {\n    echo $post-\u003etitle;\n}\n\necho $db-\u003epagerLinks();\n```\n\n`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;\n\n```php\n$db-\u003epager(25, 'page');\n```\n\n### pagerLinks()\n\nLinklerin çıktısını almak için kullanılır.\n\n```php\necho $db-\u003epagerLinks();\n```\n\n-   `«` `‹` `1` `2` `3` `4` `5` `6` `...` `›` `»`\n\n### pagerData()\n\nToplam sonuç, sayfa sayısı, limit, ofset ve aktif sayfa gibi bilgilere ulaşmak için kullanılır.\n\n```php\nvar_dump($db-\u003epagerData());\n```\n\n```php\nArray\n(\n    [count] =\u003e 255\n    [limit] =\u003e 10\n    [offset] =\u003e 0\n    [total] =\u003e 26\n    [current] =\u003e 1\n)\n```\n\n### setPagerTemplate()\n\nLink çıktısına ait HTML şablonu düzenlemek için kullanılır.\n\n```php\n$db-\u003esetPagerTemplate('\u003cli\u003e\n        \u003ca class=\"{active}\" href=\"{url}\"\u003e\n            {text}\n        \u003c/a\u003e\n    \u003c/li\u003e');\n```\n\n---\n\n## Cache\n\nSonuç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.\n\n### Disk Cache\n\n`comments` tablosundaki verileri mysql'den okur ve diske kaydeder. Sonuçlar 30 saniye boyunca diskten okunur.\n\n```php\n$results = $db-\u003ecache(30)-\u003eget('comments');\n```\n\n`fromDisk()` metodu; son sorgu diskten okunuyorsa `true`, mysql'den okunuyorsa `false` döner.\n\n### Redis Cache\n\n`comments` tablosundaki verileri mysql'den okur ve redis veritabanına kayder. Sonuçlar 30 saniye boyunca Redis üzerinden okunur.\n\n```php\n$results = $db-\u003eredis(30)-\u003eget('comments');\n```\n\n`fromRedis()` metodu; son sorgu Redisten okunuyorsa `true`, mysql'den okunuyorsa `false` döner.\n\n```php\n$redisConnect = (function(){\n    $redis = new \\Redis();\n    $redis-\u003econnect('127.0.0.1', 6379, 1, NULL, 0, 0, ['auth' =\u003e ['default', '']]);\n    return $redis;\n});\n\n$db-\u003esetRedis($redisConnect());\n```\n\n`setRedis()` metodu ile Redis sınıfı dışarıdan dahil edilebilir.\n\n\u003e Not: Redis ile önbellekleme işlemi yapabilmek için sunucunuzda Redis yüklü olması gerekir.\n\n---\n\n## Insert\n\nTabloya yeni bir satır eklemek için kullanılır. `insert()` metoduyla tek veya birden fazla kayıt eklenebilir.\n\n### Tekli Kayıt\n\n```php\n$db-\u003etable('products')-\u003einsert([\n    'name'  =\u003e 'Apple Iphone X 128 Gb',\n    'code'  =\u003e 'APPLEX128',\n    'price' =\u003e '999.9'\n]);\n```\n\n### Çoklu Kayıt\n\n```php\n$db-\u003etable('products')-\u003einsert([\n    ['name' =\u003e 'Apple Iphone X 128 Gb', 'code' =\u003e 'APPLEX128', 'price' =\u003e '999.9'],\n    ['name' =\u003e 'Apple Iphone X 256 Gb', 'code' =\u003e 'APPLEX256', 'price' =\u003e '1149.9'],\n    ['name' =\u003e 'Apple Iphone X 512 Gb', 'code' =\u003e 'APPLEX512', 'price' =\u003e '1349.9']\n]);\n```\n\nSon kaydedilen satırın birincil anahtarına ulaşmak için `lastInsertId()` metodunu, toplam etkilenen satır sayısı için `rowCount()` metodunu kullanabilirsiniz.\n\n### Upsert\n\n```php\n$db-\u003etable('products')-\u003eupsert([\n    'name'  =\u003e 'Apple Iphone X 128 Gb',\n    'code'  =\u003e 'APPLEX128',\n    'price' =\u003e '999.9'\n]);\n```\n\nBenzersiz anahtarlara eşleşen veri bulunursa var olan kayıt güncellenir, yoksa yeni kayıt eklenir.\n\n-   Henüz Sqlite desteği yok.\n\n### Insert Ignore\n\n```php\n$db-\u003etable('products')-\u003einsertIgnore([\n    'name'  =\u003e 'Apple Iphone X 128 Gb',\n    'code'  =\u003e 'APPLEX128',\n    'price' =\u003e '999.9'\n]);\n```\n\nBenzersiz anahtarlara eşleşen veri bulunursa kayıt eklenmez, yoksa yeni kayıt eklenir.\n\n### Insert Replace\n\n```php\n$db-\u003etable('products')-\u003einsertReplace([\n    'name'  =\u003e 'Apple Iphone X 128 Gb',\n    'code'  =\u003e 'APPLEX128',\n    'price' =\u003e '999.9'\n]);\n```\n\nBenzersiz 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.\n\n---\n\n## Update\n\nBir veya birden fazla kaydı güncellemek için kullanılır.\n\n```php\n$update = $db-\u003etable('products')\n             -\u003ewhere('id', 11255)\n             -\u003eupdate(['active' =\u003e 1]);\n```\n\n-   Etkilenen satır sayısı döner.\n\n### Touch\n\n`active` sütunu `1` ise `0`, `0` ise `1` değerini alır.\n\n```php\n$touch = $db-\u003etable('products')\n            -\u003etouch('active');\n```\n\n-   `touch('active', 'products')`\n\n### Increment\n\n`hit` sütunu `1` veya gönderilen değer kadar artar.\n\n```php\n$increment = $db-\u003etable('posts')\n                -\u003ewhere('slug', 'whats-new-in-laravel-8')\n                -\u003eincrement('hit');\n```\n\n-   `increment('hit')`\n-   `increment('hit', 5)`\n\n### Decrement\n\n`hit` sütunu `1` veya gönderilen değer kadar azalır.\n\n```php\n$increment = $db-\u003etable('posts')\n                -\u003ewhere('slug', 'whats-new-in-laravel-8')\n                -\u003edecrement('hit');\n```\n\n-   `decrement('hit')`\n-   `decrement('hit', 5)`\n\n---\n\n## Delete\n\nBir veya birden fazla kaydı silmek için kullanılır.\n\n```php\n$delete = $db-\u003ein('id', [321, 412, 324, 142])\n             -\u003edelete('products');\n```\n\n-   Etkilenen satır sayısı döner.\n\n---\n\n## Filter\n\nGö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.\n\n| Primary | Not Null | Not Null | Not Null | enum('Male', 'Female') |\n| ------- | :------: | -------: | -------- | ---------------------- |\n| id      |   name   |    email | password | gender                 |\n\n`users` adında bir tablomuz olduğunu ve yukarıdaki sütunlardan oluştuğunu varsayalım.\n\n```php\n$db-\u003etable('users')-\u003efilter()-\u003einsert([\n    'username' =\u003e 'walterbishop',\n    'email'    =\u003e 'walter@bishop.com',\n    'password' =\u003e 'U7!hsjlIus',\n    'gender'   =\u003e 'Male',\n    'fullname' =\u003e 'Walter Bishop'\n]);\n```\n\n-   `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.\n\n```php\n$db-\u003etable('users')-\u003efilter()-\u003einsert($_POST);\n```\n\n-   `$_POST` ile gönderilen formlar için örnek bir kullanım şekli.\n\n## Validate\n\nBu 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.\n\n```php\ntry{\n    $db-\u003etable('users')-\u003evalidate()-\u003einsert([\n        'username' =\u003e 'walterbishop',\n        'email'    =\u003e 'walter@bishop.com',\n        'password' =\u003e 'U7!hsjlIus',\n        'gender'   =\u003e 'Elephant'\n    ]);\n} catch(Exception $e){\n    echo $e-\u003egetMessage();\n}\n```\n\n-   `gender` sütununda tanımlı enum değerleri arasında `Elephant` olmadığı için hata döner ve kayıt eklenmez.\n\n---\n\n## Transaction\n\nMetodlar: `inTransaction()`, `beginTransaction()`, `commit()`, `rollBack()`\n\n```php\ntry {\n\n    $db-\u003ebeginTransaction();\n\n    $db-\u003etable('products')-\u003einsert([\n        'name'  =\u003e 'Apple Iphone X 128 Gb',\n        'code'  =\u003e 'APPLEX128',\n        'price' =\u003e '999.9'\n    ]);\n\n    $db-\u003etable('images')-\u003einsert([\n        'productId' =\u003e $db-\u003elastInsertId(),\n        'imageName' =\u003e 'foo.jpg'\n    ]);\n\n    $db-\u003ecommit();\n\n} catch(Exception $e) {\n\n    $db-\u003erollBack();\n}\n```\n\n---\n\n## Select\n\n```php\n$db-\u003eselect('id, name, code, price')...\n```\n\n-   `select('id, name')`\n-   `select(['id', 'name', ...])`\n\n\u003e Metod kullanılmazsa varsayılan olarak `*` ile tüm sütunlar seçilir.\n\n### Select Functions\n\nMetodlar: `count()`, `sum()`, `avg()`, `min()`, `max()`\n\n```php\n$db-\u003esum('amount')...\n```\n\n-   `sum('amount')`\n-   `sum('amount', 'totalAmount')`\n\n## Table\n\n`table()` ve `from()` metodu aynı işlevi görür.\n\n```php\n$db-\u003etable('products')...\n```\n\n-   `table('products')`\n-   `table(['products as p', 'images as i'])`\n\n## Join\n\nMetodlar: `leftJoin()`, `rightJoin()`, `innerJoin()`, `leftOuterJoin()`, `rightOuterJoin()`, `fullOuterJoin()`\n\n```php\n$db-\u003etable('products as p')\n   -\u003eleftJoin('images as i', 'p.id', 'i.productId')\n   -\u003eget();\n```\n\n-   `leftJoin('images', 'products.id', 'images.productId')`\n-   `leftJoin('images', 'products.id = images.productId')`\n-   `leftJoin('images ON products.id = images.productId')`\n\n### joinNode()\n\nİlişki kurulan tabloyla sonuç içerisinde yeni bir child element oluşturmak için `joinNode()` yöntemini kullanabilirsiniz.\n\n```php\n$basketData = $db-\u003etable('users AS u')\n                 -\u003eselect('u.*')\n                 -\u003eleftJoin('cart AS c', 'c.userId', 'u.id')\n                 -\u003ejoinNode('cartData', ['name' =\u003e 'c.productName', 'quantity' =\u003e 'c.quantity'])\n                 -\u003egroup('u.id')\n                 -\u003efirst();\n```\n\n```php\nstdClass Object\n(\n    [id] =\u003e 159\n    [fullName] =\u003e John Doe\n    [email] =\u003e john@doe.com\n    [cartData] =\u003e Array\n        (\n            [0] =\u003e stdClass Object\n                (\n                    [name] =\u003e Apple Iphone X 128 GB\n                    [quantity] =\u003e 1\n                )\n\n            [1] =\u003e stdClass Object\n                (\n                    [name] =\u003e Apple Iphone X 256 GB\n                    [quantity] =\u003e 1\n                )\n\n        )\n)\n```\n\n## Where\n\nMetodlar: `where()`, `orWhere()`, `notWhere()`, `orNotWhere()`\n\n```php\n$db-\u003ewhere('id', 32886)...\n```\n\n-   `where('active', 1)`\n-   `where('stock \u003e= ? AND active = ?', [2, 1])`\n-   `where(['stock \u003e ?', 'active \u003e ?'], [2, 1])`\n-   `where(['stock' =\u003e 2, 'active' =\u003e 1])`\n-   `where('stock \u003e= 2 AND active = 1 AND MONTH(updated) = MONTH(NOW())')`\n\n## Group Where\n\n```php\n$db-\u003etable('products')\n   -\u003elike('name', '%iphone%')\n   -\u003egrouped(function($q){\n        $q-\u003ein('brandId', [1, 2, 3])-\u003eorIn('categoryId', [1, 2, 3]);\n   })-\u003eget();\n```\n\n-   `SELECT * FROM products WHERE name LIKE ? AND (brandId IN(?,?,?) OR categoryId IN(?,?,?))`\n\n## Between\n\nMetodlar: `between()`, `orBetween()`, `notBetween()`, `orNotBetween()`\n\n```php\n$db-\u003ebetween('price', 50, 250)...\n```\n\n## Is Null - Not Null\n\nMetodlar: `isNull()`, `orIsNull()`, `notNull()`, `orNotNull()`\n\n```php\n$db-\u003eisNull('code')...\n```\n\n-   `isNull('slug')`\n-   `isNull(['slug', ...])`\n\n## In - Not In\n\nMetodlar: `in()`, `orIn()`, `notIn()`, `orNotIn()`\n\n```php\n$db-\u003ein('id', [33922, 31221, 45344, 35444])...\n```\n\n## Find In Set\n\nMetodlar: `findInSet()`, `orFindInSet()`, `notFindInSet()`, `orNotFindInSet()`\n\n```php\n$db-\u003efindInSet('categoryId', 139)...\n```\n\n## Like - Not Like\n\nMetodlar: `like()`, `orLike()`, `notLike()`, `orNotlike()`\n\n```php\n$db-\u003elike('name', '%Apple%')...\n```\n\n-   `like('name')`\n-   `like(['name', ...])`\n\n## Order\n\nVarsayılan olarak `desc` seçilir.\n\n```php\n$db-\u003eorder('id')...\n```\n\n-   `order('id')`\n-   `order('id', 'asc')`\n-   `order('id desc, name asc')`\n-   `order('rand()')`\n\n## Group\n\n```php\n$db-\u003egroup('id')...\n```\n\n-   `group('id')`\n-   `group(['id', 'name'])`\n\n## Having\n\n```php\n$db-\u003ehaving('stock', 5)...\n```\n\n-   `having('stock', 5)`\n-   `having('stock \u003e 5')`\n-   `having('stock \u003e ?', 5)`\n\n## Limit - Offset\n\nLimit, Offset ve Sayfalama işlemleri için kullanılır.\n\n```php\n$db-\u003elimit(100)...\n$db-\u003elimit(100, 0)...\n$db-\u003elimit(100)-\u003eoffset(0)...\n```\n\n## History\n\n### queryHistory()\n\nSorgu listesine ulaşmak için kullanılır.\n\n```php\nvar_dump($db-\u003equeryHistory());\n```\n\n```php\nArray\n(\n    [0] =\u003e Array\n        (\n            [query] =\u003e SELECT id, name FROM products WHERE code = ? AND active = ? ORDER BY id desc\n            [params] =\u003e Array\n                (\n                    [0] =\u003e 34066\n                    [1] =\u003e 1\n                )\n\n            [from] =\u003e redis\n        )\n)\n```\n\n### lastQuery()\n\nSon sorguyu görüntülemek için kullanılır.\n\n```php\necho $db-\u003elastQuery();\n```\n\n-   `SELECT id, name FROM products WHERE code = ? AND active = ? ORDER BY id desc`\n\n### lastParams()\n\nSon sorguyu ait parametreleri görmek için kullanılır.\n\n```php\nvar_dump($db-\u003elastParams());\n```\n\n```php\nArray\n(\n    [0] =\u003e 34066,\n    [1] =\u003e 1\n)\n```\n\n### queryCount()\n\nToplam sorgu sayısına ulaşmak için kullanılır.\n\n```php\necho $db-\u003equeryCount();\n```\n\n-   `1`\n\n---\n\n## Structure\n\nYapısal sorgular için kullanılır.\n\n```php\n$db-\u003erepair('sessions');\n```\n\nMetodlar: `truncate()`, `drop()`, `optimize()`, `analyze()`, `check()`, `checksum()`, `repair()`\n\n## Contributors\n\n-   [mlevent](https://github.com/mlevent) Mert Levent\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlevent%2Fpdb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmlevent%2Fpdb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlevent%2Fpdb/lists"}