یه برنامه نویس وب که شدید علاقه داره به یادگیری بیشتر توی زمینه کاریش و مسائل مرتبط با آی.تی و تکنولوژی :))
مشاهده ی کوئریهای اجرا شده SQL در لاراول 5
یکی از موارد بسیار مفید و کاربردی برای همه توسعه دهنده های وب هنگام خطایابی کدهاشون، مشاهده نحوه ی اجرای کوئریهاست. به این معنی که توسعه دهنده ببینه که فلان درخواست اسکیوال که از طریق لاراول اجرا شده آیا به شکل صحیحی نوشته شده یا خیر؟ و یا اینکه مقادیر مورد نظر به طریق درست جایگذاری (Bind) شدن یا نه.
توی لاراول ساده ترین راه برای مشاهده کوئری ها اینه که تابع toSql() رو در انتهای هر دستور مربوط به کار با مدلهاتون بذارید تا کوئری درخواست شده رو بهتون برگردونه.
مثال:
return User::toSql();
خروجی:
select * from `users`
return User::where('id',1)->toSql();
خروجی:
select * from `users` where `id` = ?
راه دوم:
راه حل دوم استفاده از رویداد listen مربوط به دیتابیس به شکل زیر هستش که هم کوئری و هم مقادیری که به کوئری bind میشه رو برمیگردونه.
DB::listen(function ($event) {
dump($event->sql);
dump($event->bindings);
});
نکته مهم اینه که باید این خطوط رو در ابتدای فایل web.php و یا api.php بسته به جایی که route هاتون رو تعریف و استفاده کردید قرار بدید.
راه سوم:
این راه اصولی و پیشنهادی برای لاگ کردن و خطایابی طبق داکیومنت رسمی هستش که همین خطوط بالا رو باید بذارید توی تابع boot مربوط به appServiceProvider.php.
نکته پایانی:
استفاده از متد getQueryLog هم میتونه مفید واقع بشه :)
امیدوارم مفید بوده باشه.
مطلبی دیگر از این انتشارات
نوشتن trait در لاراول
مطلبی دیگر از این انتشارات
نحوه فارسی سازی slug در لاراول با پکیج cviebrock/eloquent-sluggable
مطلبی دیگر از این انتشارات
یادگیری مقدماتی لاراول - پارت دوازدهم