FluentPDO هو منشئ استعلام PHP SQL يستخدم PDO. إنها مكتبة سريعة وخفيفة تتميز بأداة إنشاء روابط ذكية، والتي تقوم تلقائيًا بإنشاء روابط الجدول لك.
واجهة سهلة لإنشاء استعلامات قوية
يدعم أي قاعدة بيانات متوافقة مع PDO
القدرة على إنشاء استعلامات SELECT وINSERT وUPDATE وDELETE المعقدة باستخدام القليل من التعليمات البرمجية
اكتب تلميحًا للطرق السحرية مع إكمال التعليمات البرمجية في بيئة التطوير المتكاملة الذكية
الإصدار المستقر من FluentPDO ويتم الحفاظ عليه بنشاط. يدعم رسميًا PHP 7.3 إلى PHP 8.0، لكنه يمكنه العمل مع الإصدارات السابقة من PHP 7.
الإصدار القديم من FluentPDO. لم يعد مدعومًا ولن تتم صيانته أو تحديثه. يعمل هذا الإصدار مع PHP 5.4 إلى 7.1.
هذا الإصدار عبارة عن إعادة كتابة كاملة لـ Fluent من الألف إلى الياء. ميزتها الرئيسية هي استخدام أقل للذاكرة وأداء أكبر بكثير في بناء الاستعلامات. كما أنه يضع بعض القيود الإضافية لتسهيل قراءة الاستعلامات وصيانتها. لقد كان التوثيق أيضًا طلبًا شائعًا جدًا، ويتم توثيق الإصدار 3 بالكامل جنبًا إلى جنب مع التطوير. سيتم نشر التفاصيل والمقاييس بمجرد توفرها.
Sitepoint - البدء مع FluentPDO
الطريقة المفضلة لتثبيت FluentPDO هي عبر الملحن.
أضف السطر التالي في ملف composer.json
الخاص بك:
"require": { ... "envms/fluentpdo": "^2.2.0" }
قم بتحديث تبعياتك باستخدام composer update
، وبذلك تكون قد انتهيت!
إذا كنت تفضل عدم استخدام الملحن، فقم بتنزيل أحدث إصدار، وقم بإنشاء الدليل Envms/FluentPDO
في دليل مكتبتك، وقم بإفلات هذا المستودع فيه. وأخيراً أضف:
يتطلب "[lib-dir]/Envms/FluentPDO/src/Query.php"؛
إلى الجزء العلوي من التطبيق الخاص بك. ملاحظة: ستحتاج إلى أداة تحميل تلقائية لاستخدام FluentPDO دون تغيير كود المصدر الخاص بها.
قم بإنشاء مثيل PDO جديد، وقم بتمرير المثيل إلى FluentPDO:
$pdo = new PDO('mysql:dbname=fluentdb', 'user', 'password');$fluent = new EnvmsFluentPDOQuery($pdo);
وبعد ذلك، يصبح إنشاء الاستعلامات أمرًا سريعًا وسهلاً:
استعلام $ = $fluent->من('تعليق') ->أين('article.published_at > ?', $date) ->orderBy('published_at DESC') ->الحد(5);
والتي من شأنها بناء الاستعلام أدناه:
SELECT comment.*FROM commentLEFT JOIN Article ON Article.id = comment.article_idWHERE Article.published_at > ?ORDER BYarticle.published_at DESCLIMIT 5
للحصول على البيانات من التحديد، كل ما نفعله هو تكرار المصفوفة التي تم إرجاعها:
foreach ($query as $row) {echo "$row['title']n"; }
لنبدأ بالانضمام التقليدي، أدناه:
$query = $fluent->from('article') ->leftJoin('المستخدم على user.id =article.user_id') ->select('user.name');
هذا مطول جدًا، وليس ذكيًا جدًا. إذا كانت جداولك تستخدم أسماء مفاتيح أساسية وأجنبية مناسبة، فيمكنك اختصار ما ورد أعلاه إلى:
$query = $fluent->from('article') ->leftJoin('المستخدم') ->select('user.name');
هذا أفضل، لكنه ليس مثاليًا. ومع ذلك، سيكون من الأسهل عدم كتابة أي صلات :
$query = $fluent->from('article') ->select('user.name');
رائع، أليس كذلك؟ يستطيع FluentPDO إنشاء عملية ربط لك، من خلال إضافة اسم الجدول الخارجي إلى العمود المطلوب.
جميع المقتطفات الثلاثة أعلاه ستنشئ نفس الاستعلام بالضبط:
اختر المقالة.*، اسم المستخدم من المقالة الانضمام إلى المستخدم الأيسر على user.id =article.user_id
أخيرًا، من الجيد دائمًا تحرير الموارد بمجرد الانتهاء من واجباتها:
$ بطلاقة->إغلاق();
$query = $fluent->from('article')->where('id', 1)->fetch();$query = $fluent->from('user', 1)->fetch(); // إصدار أقصر في حالة تحديد صف واحد بواسطة المفتاح الأساسي
$values = array('title' => 'article 1', 'content' => 'content 1');$query = $fluent->insertInto('article')->values($values)->execute( );$query = $fluent->insertInto('article', $values)->execute(); // نسخة أقصر
$set = array('published_at' => new FluentLiteral('NOW()'));$query = $fluent->update('article')->set($set)->where('id', 1 )->execute();$query = $fluent->update('article', $set, 1)->execute(); // إصدار أقصر في حالة تحديث صف واحد بالمفتاح الأساسي
$query = $fluent->deleteFrom('article')->where('id', 1)->execute();$query = $fluent->deleteFrom('article', 1)->execute(); // إصدار أقصر في حالة حذف صف واحد بواسطة المفتاح الأساسي
ملاحظة : سيتم تشغيل استعلامات INSERT وUPDATE وDELETE فقط بعد الاتصال بـ ->execute()
مجاني للاستخدام التجاري وغير التجاري بموجب تراخيص Apache 2.0 أو GPL 2.0.