در لاراول، گاهی اوقات نیاز دارید خروجی 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 بدست آورید. این امر می تواند به شما در اشکال زدایی، بهینه سازی و درک بهتر نحوه عملکرد لاراول و دیتابیس کمک کند.
در صورت داشتن هرگونه سوال یا نظر، لطفاً در زیر این پست نظر خود را بیان کنید.
