Laravel does a lot of magic behind the scenes when fetching data from the database. Luckily there are some really easy ways to get the raw SQL query so that you can understand everything that's going on behind the scenes. Let me show you how to do this in a few examples.
Fetching a user from the DB
Using Eloquent we can easily fetch a specific user with the following query:
$user = User::where('email', '[email protected]')->first();
Now, if we wanted to see the query that was being called, instead of calling the
first() method, we could replace that with
$user = User::where('email', '[email protected]')->toSql();
If we were to output the code above using a
dd($user) command, we would see the following output:
"select * from `users` where `email` = ?"
This is excellent because now we can see the underlying raw SQL query from any of our Eloquent calls.
This was obviously a very simple example, but I hope you can see how helpful this can be when you need to debug a query that's not returning the right results.
You may also want to checkout the following post by BeyondCode to learn more about outputting the query for any Eloquent method https://tinkerwell.app/blog/how-to-get-the-raw-sql-query-from-the-laravel-query-builder.
Happy coding ✌️