Select queries let you get data from your database so your app can show or use it.
Select queries in Laravel
DB::table('table_name')->select('column1', 'column2')->get();
You use DB::table('table_name') to start a query on a table.
select() chooses which columns to get. get() runs the query and returns results.
DB::table('users')->select('name', 'email')->get();
DB::table('products')->where('price', '>', 100)->select('id', 'name')->get();
DB::table('orders')->first();This code fetches all users from the 'users' table, selecting only their name and email. Then it prints each user's name and email on a new line.
<?php use Illuminate\Support\Facades\DB; // Get all users with their name and email $users = DB::table('users')->select('name', 'email')->get(); foreach ($users as $user) { echo "Name: {$user->name}, Email: {$user->email}\n"; }
Always use select() to get only the columns you need. It makes your app faster.
Use where() to filter results before getting them.
get() returns a collection of results, while first() returns just one record.
Select queries get data from your database tables.
Use DB::table('table')->select(...)->get() to fetch data.
Filter with where() and choose columns with select().
Practice
select() method do in a Laravel query builder?Solution
Step 1: Understand the purpose of
Theselect()select()method tells Laravel which columns you want to get from the database table.Step 2: Compare with other query methods
Methods likeinsert(),delete(), andupdate()perform different actions, not selecting columns.Final Answer:
It specifies which columns to retrieve from the database. -> Option AQuick Check:
select()chooses columns [OK]
- Confusing select() with insert() or update()
- Thinking select() deletes data
- Assuming select() fetches all columns by default
Solution
Step 1: Check the correct way to pass multiple columns
Laravel'sselect()accepts an array of column names to select multiple columns.Step 2: Analyze each option's syntax
DB::table('users')->select('name, email')->get(); usesselect('name, email'), which selects a single column named 'name, email'. Options B and D use invalid operators&and+. DB::table('users')->select(['name', 'email'])->get(); correctly uses an array['name', 'email'].Final Answer:
DB::table('users')->select(['name', 'email'])->get(); -> Option AQuick Check:
Use array for multiple columns in select() [OK]
- Passing multiple strings without array
- Using operators like + or & inside select()
- Forgetting to call get() to execute query
DB::table('products')->select('name')->where('price', '>', 100)->get();Solution
Step 1: Understand the where condition
The query filters products where the price is greater than 100.Step 2: Understand the select clause
Only the 'name' column is selected, so only product names will be returned.Final Answer:
All products with price greater than 100, showing only their names. -> Option CQuick Check:
where('price', '>', 100) filters price > 100 [OK]
- Confusing > with < in where clause
- Expecting all columns instead of selected ones
- Thinking where() causes syntax error here
DB::table('orders')->select('id', 'total')->where('status' = 'pending')->get();Solution
Step 1: Check the where clause syntax
The where method expects two arguments separated by a comma, not an assignment with '='.Step 2: Identify the correct syntax
The correct syntax iswhere('status', 'pending'), notwhere('status' = 'pending').Final Answer:
Using '=' instead of ',' to separate arguments in where(). -> Option BQuick Check:
where() needs comma between arguments [OK]
- Using = instead of comma in where()
- Confusing assignment with comparison
- Thinking select() can't take multiple columns
Solution
Step 1: Understand filtering multiple conditions
Laravel allows passing an associative array to where() to filter multiple columns with AND logic.Step 2: Analyze each option
DB::table('users')->select(['id', 'email'])->where(['active' => 1, 'email_verified' => 1])->get(); correctly useswhere(['active' => 1, 'email_verified' => 1]). DB::table('users')->select('id', 'email')->where('active' == 1 && 'email_verified' == 1)->get(); uses invalid syntax with==and&&inside where(). DB::table('users')->select(['id', 'email'])->where('active', '=', 1, 'email_verified', '=', 1)->get(); passes too many arguments to a single where(). DB::table('users')->select(['id', 'email'])->where('active' = 1)->where('email_verified' = 1)->get(); uses=instead of,to separate where() arguments, causing syntax error.Final Answer:
DB::table('users')->select(['id', 'email'])->where(['active' => 1, 'email_verified' => 1])->get(); -> Option DQuick Check:
Use array in where() for multiple AND conditions [OK]
- Using invalid operators inside where()
- Passing too many arguments to where()
- Not using array for multiple conditions
Ready to prove it?
Pass the test and this pattern moves unknown
