• 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() را بررسی کنید. نام متد به‌تنهایی تضمین نمی‌کند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.

سایر پست های داکیومنت