- جمعه 24 مهر 1405 ساعت 21:00
- 3.1.9
- کامل شده
- منقضی شده
Query Builder رابطی زنجیرهای برای ساخت SELECT، INSERT، UPDATE و DELETE است. این کلاس بخش زیادی از تفاوتهای نحوی دیتابیسهای پشتیبانیشده را مدیریت میکند و مقدارها را در بسیاری از عملیات Escape میکند.
ساختار و API اصلی
select() ستونها را انتخاب میکند، from() جدول را مشخص میکند، where() شرط میسازد، join() جدول مرتبط را متصل میکند، group_by() و having() گروهبندی را انجام میدهند، order_by() ترتیب را مشخص میکند و limit() تعداد نتایج را محدود میکند. برای نوشتن نیز insert()، update() و delete() وجود دارند.
نمونه استفاده
$query = $this->db->select('p.id, p.name, c.title AS category')
->from('products p')
->join('categories c', 'c.id = p.category_id', 'left')
->where('p.status', 'active')
->order_by('p.created_at', 'DESC')
->limit(20)
->get();نکته مهم
از متدهای get_compiled_select() و get_compiled_insert() برای مشاهده SQL تولیدشده استفاده کنید. برای شرطهای پیچیده، گروهبندی شرطها را رعایت کنید و ورودی کاربر را به نام ستون یا عبارت خام تبدیل نکنید.
مطالعه مرتبط
برای ادامه مطالعه، MVC، کوئری، ترنزکشن را ببینید.
متدهای اصلی Query Builder
| متد یا مفهوم | کاربرد |
|---|---|
select() و from() | انتخاب ستون و جدول. |
join() و where() | اتصال جدول و شرطگذاری. |
like() و group_by() | جستوجوی متنی و گروهبندی. |
having() و order_by() | شرط گروه و مرتبسازی. |
limit() و get() | محدودسازی و اجرای SELECT. |
insert()، update() و delete() | عملیات نوشتن. |
get_compiled_select() | مشاهده SQL ساختهشده بدون اجرا. |
نکات عملی برای دیتابیس
پیش از استفاده در محیط واقعی، Driver و نسخه موتور دیتابیس را با قابلیتهای موردنیاز تطبیق دهید. Queryهای دارای ورودی کاربر باید Binding داشته باشند، عملیات چندمرحلهای باید در Transaction قرار بگیرند و برای Queryهای پرتکرار، Index و Execution Plan بررسی شود. تعداد Queryها و حجم Result نیز روی حافظه و زمان پاسخ اثر دارد.
برای عیبیابی، SQL تولیدشده، تعداد ردیفهای متاثر و زمان اجرا را در محیط توسعه ثبت کنید. در Production اطلاعات محرمانه را از Log حذف کنید و خطاهای دیتابیس را به کاربر نشان ندهید. اگر ساختار جدول تغییر میکند، تغییر را نسخهبندی و پیش از اجرا Backup بگیرید.
در بازبینی کد، ترتیب و نتیجه متدهای select() و from()، join() و where()، like() و group_by()، having() و order_by() را بررسی کنید. نام متد بهتنهایی تضمین نمیکند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.