In Laravel 12, updating records in the database can be achieved using both the Eloquent ORM and the Query Builder. Here's how you can perform update operations using each method:
1. Using Eloquent ORM
Eloquent provides a fluent and expressive interface for interacting with your database tables. Updating a Record by ID:<?php use App\Models\User; // Retrieve the user by their primary key (ID) $user = User::find($id); // Update attributes $user->name = 'New Name'; $user->email = 'newemail@example.com'; // Save the changes to the database $user->save(); ?>Updating Records Based on a Condition:
<?php
use App\Models\User;
// Update all users with the role 'subscriber' to 'member'
User::where('role', 'subscriber')->update(['role' => 'member']);
?>
Using `updateOrCreate` Method:-
The `updateOrCreate` method attempts to find a record matching the given attributes and updates it; if no matching record is found, it creates a new one.
<?php use App\Models\User; // Update the user's name if the email exists; otherwise, create a new user User::updateOrCreate( ['email' => 'johndoe@example.com'], ['name' => 'John Doe', 'role' => 'member'] ); ?>In this example, Laravel searches for a user with the specified email. If found, it updates the name and role; otherwise, it creates a new user with these attributes.
2. Using Query Builder
Laravel's Query Builder offers a more direct approach to constructing and executing database queries. Updating Records Based on a Condition:<?php
use Illuminate\Support\Facades\DB;
// Update users with 'inactive' status to 'active'
DB::table('users')
->where('status', 'inactive')
->update(['status' => 'active']);
?>
Updating Multiple Columns:
<?php
use Illuminate\Support\Facades\DB;
// Update multiple columns for users in a specific department
DB::table('users')
->where('department', 'sales')
->update([
'status' => 'active',
'role' => 'manager'
]);
?>
Incrementing or Decrementing a Column's Value:
You can increment or decrement a column's value using the `increment` and `decrement` methods.
<?php
use Illuminate\Support\Facades\DB;
// Increment the 'login_count' by 1 for a specific user
DB::table('users')
->where('id', $id)
->increment('login_count');
// Decrement the 'credits' by 5 for a specific user
DB::table('users')
->where('id', $id)
->decrement('credits', 5);
?>