deananhdev/query-builder

Simple, dependency-free PDO query builder with method chaining.

Installs: 4

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/deananhdev/query-builder

v1.0.0 2025-06-24 08:13 UTC

This package is auto-updated.

Last update: 2025-11-26 09:10:35 UTC


README

Một thư viện PHP nhẹ, không phụ thuộc, giúp xây dựng câu lệnh SQL bằng cách xâu chuỗi phương thức. Hoạt động tốt với mọi cơ sở dữ liệu hỗ trợ PDO.

🚀 Features

Dễ dàng sử dụng với cú pháp xâu chuỗi phương thức: select(), where(), insert(), update(), delete()

Hỗ trợ prepared statement và binding tham số an toàn

Cú pháp rõ ràng, lấy cảm hứng từ Laravel Query Builder

Không phụ thuộc bên ngoài, chỉ dùng PHP thuần

📦 Installation

composer require deananhdev/query-builder

Yêu cầu: PHP >= 8.0

Usage Example

<?php

require_once __DIR__ . '/vendor/autoload.php';

use QueryBuilder\QueryBuilder;

// Load cấu hình từ file config
$config = require __DIR__ . '/config/database.php';

$dsn = "mysql:host={$config['host']};dbname={$config['dbname']};charset={$config['charset']}";

$pdo = new PDO($dsn, $config['username'], $config['password']);

// Khởi tạo QueryBuilder
$qb = new QueryBuilder($pdo);

$users = $db->table('users')->select()->get();
print_r($users);

$user = $db->table('users')
    ->where('name', '=', 'Alice')
    ->first();
print_r($user);

$count = $db->table('users')->count();
echo "User count: $count\n";

$names = $db->table('users')->pluck('name');
print_r($names);

$users = $db->table('users')
    ->orderBy('id', 'desc')
    ->limit(2)
    ->get();
print_r($users);


$results = $db->table('users')
    ->select(['name', 'COUNT(*) as total'])
    ->groupBy('name')
    ->having('total', '>', 0)
    ->get();
print_r($results);

$joined = $db->table('users')
    ->select(['users.name', 'orders.product_name'])
    ->join('orders', 'users.id', '=', 'orders.user_id')
    ->get();
print_r($joined);

Config:

<?php
return [
    'host'     => 'localhost',
    'dbname'   => 'simple_query_builder',
    'username' => 'root',
    'password' => '',
    'charset'  => 'utf8mb4'
];

Tham chiếu các phương thức (Class Reference)

Phương thức Mô tả chức năng
table(string $name): self Chọn bảng muốn thao tác
select(array $cols = ['*']): self Chọn các cột cần lấy dữ liệu (mặc định là *)
where(string $field, string $op, $val): self Thêm điều kiện WHERE (hỗ trợ nhiều điều kiện nối bằng AND)
insert(array $data): bool Thêm dữ liệu mới vào bảng
update(array $data): bool Cập nhật dữ liệu dựa theo điều kiện đã đặt (where)
delete(): bool Xoá dữ liệu theo điều kiện đã đặt (where)
get(): array Thực thi câu lệnh SELECT và trả về tất cả bản ghi
first(): ?array Trả về bản ghi đầu tiên (giới hạn 1 kết quả)
orderBy(string $col, string $dir): self Thêm điều kiện sắp xếp (mặc định asc)
limit(int $number): self Giới hạn số lượng kết quả trả về
count(): int Trả về tổng số bản ghi theo điều kiện hiện tại
pluck(string $column): array Lấy danh sách giá trị của 1 cột
reset(): self Reset lại trạng thái query builder (dùng để thực hiện truy vấn mới)
join($table, $first, $op, $second, $type='INNER'): self Thêm JOIN giữa các bảng
leftJoin(...) Shortcut cho join(..., 'LEFT')
groupBy(string or array $columns): self Gom nhóm kết quả theo cột
having($field, $operator, $value): self Thêm điều kiện HAVING sau GROUP BY
havingRaw(string $raw): self Thêm điều kiện HAVING theo câu lệnh SQL tùy chỉnh