فکر میکنم DB::unprepared یکی از متدهای کمتر شناختهشده، بدرد بخور اما در عین حال خطرناک لاراوله!
سناریو:
یه فایل SQL شامل دهها دستور مختلف داری و میخوایی اون رو اجرا کنی.
بدرد ساخت Trigger، Stored Procedure و اجرای چند دستور SQL پیچیده میخوره.
این متد میگه: SQL رو دقیقا همونطور که هست به دیتابیس بفرست و هیچ Prepared Statement یا Parameter Binding روش انجام نده.
خطرناک بودنش همینجاست چون Binding انجام نمیشه و خطر SQL Injection وجود داره.
تفاوتشم با DB::statement همینه. statement از Binding پشتیبانی میکنه و نسبت به SQL Injection ایمنتره.
بنابراین برای SQLهای ثابت و از پیش تعریفشده مناسبه، نه برای کوئریهایی که از کاربر میگیریم.
به نظرم بیشترین کاربردش اجرای فایلهای SQL آماده در Migrationهاست.
- همه تغییرات دیتابیس Version Control میشن.
- اعضای جدید تیم با اجرای Migration کارشون انجام میشه.
- دیگه خبری از این اسکریپت رو روی سرور اجرا کردی؟ یا صبر کن فایل SQL بهت بدم نیست.
@DevTwitter | <Ehsan Rezaei/>
Post #12519
6.78K

- 👍 11
- 🍌 4
- ❤ 1