CLOSE
Different Ways to Interact with Database

Different Ways to Interact with Database

Updated on 30 Jun, 2026 10 mins read 1,334 views

In Laravel, developers have various method for interacting with databases, each offering unique features and capabilities.

Eloquent ORM:

Elquent ORM (Object-Relational Mapping) is Laravel's default database interaction method, allowing developers to work with database tables as PHP objects.

  • Pros:
    • Expressive syntax simplifies database interactions.
    • Provides automatic timestamp management, soft deletes, and eager loading.
    • Facilitates efficient data retrieval and manipulation through model relationship.
  • Cons:
    • Requires defining models for each database table.
    • May introduce some performance overhead compared to raw SQL queries.

Example:

// Retrieve all users
$users = User::all();

// Create a new user
$user = new User();
$user->name = 'The User';
$user->email = 'user@example.com';
$user->save();

Query Builder:

Laravel's query builder provides a fluent, programmatic interface for constructing SQL queries using method chaining.

Suitable for dynamic queries, complex conditions, and cases requiring fine-grained control over SQL statements.

  • Pros:
    • Offers more control and flexibility compared to Eloquent ORM.
    • Allows for writing raw SQL queries within PHP code.
  • Cons:
    • Less expressive and intuitive than Eloquent ORM.
    • Requires knowledge of SQL syntax.

Example:

// Retrieve users with a specific role
$users = DB::table('users')
           ->where('role', 'admin')
           ->get();

// Update user email
DB::table('users')
    ->where('id', 1)
    ->update(['email' => 'newemail@example.com']);

Raw SQL Queries:

Developers can execute raw SQL queries directly using Laravel's database connection methods.

Reserved for scenarios where neither Eloquent nor query builder meets the requirements, such as executing complex stored procedures.

  • Pros:
    • Maximum flexibility and control over database interactions.
    • Suitable for optimizing performance-critical queries.
  • Cons:
    • Prone to SQL injection if not handled properly.
    • May be less readable and maintainable than ORM or query builder.

Example:

// Execute a raw SQL query
$users = DB::select('SELECT * FROM users WHERE role = ?', ['admin']);

Stored Procedures and Functions

Laravel supports calling stored procedures and functions defined in the database using the DB facade.

Recommended for performance optimization, data aggregation, or leveraging existing database logic.

  • Pros:
    • Encapsulates business logic directly in the database, improving performance and security.
    • Useful for complex data processing operations.
  • Cons:
    • Tightly couples application logic with database logic.
    • May increase complexity and maintenance overhead.

Example:

// Call a stored procedure
$users = DB::select('CALL GetUsersByRole(?)', ['admin']);

 

Buy Me A Coffee

Leave a comment

Your experience on this site will be improved by allowing cookies Cookie Policy