تکنولوژی نوین اینترنتی
در لاراول، برای اجرای Raw Queries میتوان از متدهای مختلفی استفاده کرد. این متدها به شما امکان میدهند تا دستورات SQL را بهطور مستقیم در پایگاه داده اجرا کنید. این روشها بهویژه زمانی مفید هستند که بخواهید یک دستور SQL پیچیده را اجرا کنید که از قابلیتهای Eloquent یا Query Builder بهسادگی قابل پیادهسازی نباشد.
لاراول یک کلاس DB
برای اجرای Raw Queries فراهم میکند که میتوان از آن برای اجرای دستورات SQL بهطور مستقیم استفاده کرد.
برای اجرای یک دستور SELECT
میتوانید از متد select
استفاده کنید. این متد یک آرایه از نتایج را بهعنوان خروجی برمیگرداند.
مثال:
در اینجا:
دستور SELECT
دادهها را از جدول posts
با شرط status = 'published'
انتخاب میکند.
از ?
برای جلوگیری از حملات SQL Injection استفاده شده است، که مقادیر در یک آرایه ارسال میشوند.
برای افزودن رکورد به پایگاه داده، از متد insert
استفاده میشود. این متد به شما اجازه میدهد که چندین رکورد را بهطور همزمان وارد کنید.
مثال:
این دستور یک رکورد جدید در جدول posts
وارد میکند.
برای بهروزرسانی دادهها در پایگاه داده، از متد update
استفاده میشود.
مثال:
این دستور وضعیت پست با id = 1
را به published تغییر میدهد.
برای حذف رکوردها، از متد delete
استفاده میشود.
مثال:
این دستور رکوردی را که دارای id = 1
است از جدول posts
حذف میکند.
اگر به دستورات پیچیده نیاز دارید که خارج از دستورهای ساده SELECT، INSERT، UPDATE و DELETE باشند، میتوانید از متد statement
استفاده کنید. این متد به شما این امکان را میدهد که دستوراتی مانند ایجاد ایندکسها یا تغییرات پیچیده در ساختار پایگاه داده را اجرا کنید.
مثال:
این دستور یک ستون جدید به نام views
به جدول posts
اضافه میکند.
لاراول Query Builder را برای اجرای دستورات SQL به صورت زنجیرهای و سادهتر فراهم کرده است. علاوه بر این، میتوانید Raw Queries را با ترکیب آن با Query Builder اجرا کنید.
اگر میخواهید یک دستور SELECT پیچیده را با Query Builder استفاده کنید، میتوانید از متد fromRaw
استفاده کنید.
مثال:
در اینجا، از DB::raw()
برای نوشتن Raw SQL استفاده شده است.
whereRaw
برای شرایط پیچیدهگاهی اوقات برای نوشتن شرایط پیچیده در where، باید از whereRaw
استفاده کنید.
مثال:
این دستور پستهایی را که وضعیت آنها published است و تاریخ ایجاد آنها بعد از 2021-01-01 است، دریافت میکند.
اگر بهطور مستقیم از Eloquent برای اجرای Raw Queries استفاده میکنید، میتوانید از متدهای raw
برای اجرای دستورات SQL استفاده کنید.
اگر میخواهید دادهها را با استفاده از Eloquent ولی با یک دستور RAW SELECT دریافت کنید، میتوانید از selectRaw
استفاده کنید:
مثال:
در اینجا، از selectRaw
برای اجرای دستور RAW SELECT استفاده شده است و شرایط با whereRaw
اعمال شده است.
برای اجرای دستوراتی مانند INSERT، UPDATE و DELETE با استفاده از Raw Queries و Eloquent، میتوانید از متد DB::statement
یا DB::update
استفاده کنید.
مثال:
این دستور همانند استفاده از DB برای اجرای دستورات UPDATE است.
هنگام استفاده از Raw Queries، باید به نکات امنیتی توجه داشته باشید:
حملات SQL Injection:
همواره از Bindings (پارامترهای جانبی مانند ?
) برای جلوگیری از حملات SQL Injection استفاده کنید. این کار میتواند امنیت کد شما را افزایش دهد.
هرگز دادهها را مستقیماً در دستورات SQL قرار ندهید.
عملکرد و مقیاسپذیری:
استفاده از Raw Queries ممکن است عملکرد بهتری نسبت به Query Builder یا Eloquent در برخی موارد داشته باشد، اما این میتواند باعث کاهش مقیاسپذیری و خوانایی کد شود.
پشتیبانی از پایگاه دادههای مختلف:
توجه داشته باشید که دستورهای Raw SQL ممکن است در پایگاه دادههای مختلف (MySQL، PostgreSQL، SQLite و ...) متفاوت عمل کنند. بنابراین، اگر از چندین پایگاه داده استفاده میکنید، به این موضوع دقت کنید.
در لاراول، برای اجرای Raw Queries میتوانید از کلاس DB یا حتی Query Builder و Eloquent استفاده کنید. این روشها به شما امکان میدهند که دستورات SQL پیچیده و خاص را اجرا کنید. با این حال، همیشه باید از Binding پارامترها برای جلوگیری از حملات SQL Injection استفاده کنید و در هنگام استفاده از Raw Queries دقت کنید تا کد شما امن و قابل نگهداری باشد.