Bird
Raised Fist0
Laravelframework~5 mins

Select queries in Laravel

Choose your learning style10 modes available
Introduction

Select queries let you get data from your database so your app can show or use it.

When you want to show a list of users on a page.
When you need to find a product by its ID.
When you want to get all posts written by a specific author.
When you want to filter data by some condition, like all orders above $100.
Syntax
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.

Examples
Gets the name and email of all users.
Laravel
DB::table('users')->select('name', 'email')->get();
Gets id and name of products costing more than 100.
Laravel
DB::table('products')->where('price', '>', 100)->select('id', 'name')->get();
Gets the first order record from the orders table.
Laravel
DB::table('orders')->first();
Sample Program

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.

Laravel
<?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";
}
OutputSuccess
Important Notes

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.

Summary

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

(1/5)
1. What does the select() method do in a Laravel query builder?
easy
A. It specifies which columns to retrieve from the database.
B. It inserts new data into the database.
C. It deletes rows from the database table.
D. It updates existing records in the database.

Solution

  1. Step 1: Understand the purpose of select()

    The select() method tells Laravel which columns you want to get from the database table.
  2. Step 2: Compare with other query methods

    Methods like insert(), delete(), and update() perform different actions, not selecting columns.
  3. Final Answer:

    It specifies which columns to retrieve from the database. -> Option A
  4. Quick Check:

    select() chooses columns [OK]
Hint: Remember: select() picks columns, not rows or actions [OK]
Common Mistakes:
  • Confusing select() with insert() or update()
  • Thinking select() deletes data
  • Assuming select() fetches all columns by default
2. Which of the following is the correct syntax to select the columns 'name' and 'email' from the 'users' table using Laravel's query builder?
easy
A. DB::table('users')->select(['name', 'email'])->get();
B. DB::table('users')->select('name' & 'email')->get();
C. DB::table('users')->select('name, email')->get();
D. DB::table('users')->select('name' + 'email')->get();

Solution

  1. Step 1: Check the correct way to pass multiple columns

    Laravel's select() accepts an array of column names to select multiple columns.
  2. Step 2: Analyze each option's syntax

    DB::table('users')->select('name, email')->get(); uses select('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'].
  3. Final Answer:

    DB::table('users')->select(['name', 'email'])->get(); -> Option A
  4. Quick Check:

    Use array for multiple columns in select() [OK]
Hint: Use array syntax for multiple columns in select() [OK]
Common Mistakes:
  • Passing multiple strings without array
  • Using operators like + or & inside select()
  • Forgetting to call get() to execute query
3. What will be the output of the following Laravel query?
DB::table('products')->select('name')->where('price', '>', 100)->get();
medium
A. All products with price greater than 100, showing all columns.
B. All products with price less than or equal to 100, showing only their names.
C. All products with price greater than 100, showing only their names.
D. Syntax error due to incorrect where clause.

Solution

  1. Step 1: Understand the where condition

    The query filters products where the price is greater than 100.
  2. Step 2: Understand the select clause

    Only the 'name' column is selected, so only product names will be returned.
  3. Final Answer:

    All products with price greater than 100, showing only their names. -> Option C
  4. Quick Check:

    where('price', '>', 100) filters price > 100 [OK]
Hint: where() filters rows; select() chooses columns [OK]
Common Mistakes:
  • Confusing > with < in where clause
  • Expecting all columns instead of selected ones
  • Thinking where() causes syntax error here
4. Identify the error in this Laravel query:
DB::table('orders')->select('id', 'total')->where('status' = 'pending')->get();
medium
A. Using '=' instead of '==' in where clause.
B. Using '=' instead of ',' to separate arguments in where().
C. Missing semicolon at the end of the query.
D. select() cannot take multiple columns.

Solution

  1. Step 1: Check the where clause syntax

    The where method expects two arguments separated by a comma, not an assignment with '='.
  2. Step 2: Identify the correct syntax

    The correct syntax is where('status', 'pending'), not where('status' = 'pending').
  3. Final Answer:

    Using '=' instead of ',' to separate arguments in where(). -> Option B
  4. Quick Check:

    where() needs comma between arguments [OK]
Hint: Use comma, not =, between where() arguments [OK]
Common Mistakes:
  • Using = instead of comma in where()
  • Confusing assignment with comparison
  • Thinking select() can't take multiple columns
5. You want to get the 'id' and 'email' of users who are active and have verified their email. Which Laravel query correctly does this?
hard
A. DB::table('users')->select(['id', 'email'])->where('active' = 1)->where('email_verified' = 1)->get();
B. DB::table('users')->select('id', 'email')->where('active' == 1 && 'email_verified' == 1)->get();
C. DB::table('users')->select(['id', 'email'])->where('active', '=', 1, 'email_verified', '=', 1)->get();
D. DB::table('users')->select(['id', 'email'])->where(['active' => 1, 'email_verified' => 1])->get();

Solution

  1. Step 1: Understand filtering multiple conditions

    Laravel allows passing an associative array to where() to filter multiple columns with AND logic.
  2. Step 2: Analyze each option

    DB::table('users')->select(['id', 'email'])->where(['active' => 1, 'email_verified' => 1])->get(); correctly uses where(['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.
  3. Final Answer:

    DB::table('users')->select(['id', 'email'])->where(['active' => 1, 'email_verified' => 1])->get(); -> Option D
  4. Quick Check:

    Use array in where() for multiple AND conditions [OK]
Hint: Use array in where() for multiple AND filters [OK]
Common Mistakes:
  • Using invalid operators inside where()
  • Passing too many arguments to where()
  • Not using array for multiple conditions
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard