چگونه خروجی Laravel Query Builder را به کوئری خام SQL تبدیل کنیم؟

در لاراول، گاهی اوقات نیاز دارید خروجی query builder را به صورت یک کوئری خام SQL مشاهده کنید. خوشبختانه، چندین راه برای به دست آوردن این عبارت خام وجود دارد.

در این مقاله، دو روش اصلی برای بدست آوردن کوئری خام SQL از Laravel Query Builder را بررسی خواهیم

استفاده از متدهای Laravel Eloquent

اولین روش برای بدست آوردن کوئری یک فراخوانی Eloquent، استفاده از متد toSql() است. این متد بدون اجرای کوئری، عبارت آن را برمیگرداند – این روش برای زمانی که نمی خواهید اطلاعات را تغییر دهید و فقط به عبارت خام کوئری نیاز دارید مناسب است – اما در این روش اگر کوئری شما پیچیده یا تودرتو باشد، کل عبارت را نشان نمی دهد.

کد نمونه:

App\User::query()
    ->where('created_at', '<', now()->subYear())
    ->with('assignedApps', 'courses')
    ->orderBy('email', 'asc')
    ->limit(5)
    ->toSql();

خروجی:

select * from `users` where `created_at` < ? order by `email` asc limit 5

مشاهده کوئری خام SQL با استفاده از Query Log لاراول

روش دوم Query Log لاراول است که تمام کوئری های یک درخواست را جمع آوری می کند. شما می توانید این لاگ را فعال کنید، کوئری خود را اجرا کنید و خروجی را چاپ کنید.

نمونه:

DB::enableQueryLog();
 
App\User::query()
    ->where('created_at', '<', now()->subYear())
    ->with('assignedApps', 'courses')
    ->orderBy('email', 'asc')
    ->limit(5)
    ->get();
 
dd(DB::getQueryLog());

این کد خروجی زیر را به شما می دهد:

array:3 [▼
  0 => array:3 [▼
    "query" => "select * from `users` where `created_at` < ? order by `email` asc limit 5"
    "bindings" => array:1 [▼
      0 => Illuminate\Support\Carbon @1588525477 {#1595 ▶}
    ]
    "time" => 7.97
  ]
  1 => array:3 [▼
    "query" => "select `apps`.*, `user_apps`.`user_id` as `pivot_user_id`, `user_apps`.`app_id` as `pivot_app_id`, `user_apps`.`created_at` as `pivot_created_at`, `user_apps`.` ▶"
    "bindings" => []
    "time" => 2.81
  ]
  2 => array:3 [▼
    "query" => "select `courses`.*, `user_courses`.`user_id` as `pivot_user_id`, `user_courses`.`course_id` as `pivot_course_id`, `user_courses`.`created_at` as `pivot_created_ ▶"
    "bindings" => []
    "time" => 0.54
  ]
]

این روش به شما اطلاعات دقیق در مورد کوئری اجرا شده و زمان اجرای آنها می دهد.

با استفاده از روش های ارائه شده در این مقاله، می توانید به راحتی کوئری خام SQL را از Laravel Query Builder بدست آورید. این امر می تواند به شما در اشکال زدایی، بهینه سازی و درک بهتر نحوه عملکرد لاراول و دیتابیس کمک کند.

در صورت داشتن هرگونه سوال یا نظر، لطفاً در زیر این پست نظر خود را بیان کنید.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *