Eloquent ORM Complete CRUD Operation in Laravel 11
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
// $users = User::all();
$users = User::simplepaginate(4); //Applying Pagination in Eloquent ORM
// $users = User::find(2);
// $users = User::find(2,["name","email"]);
// $users = User::find([2,4],["name","email"]);
// $users = User::count();
// $users = User::min("age"); //min(),max() methods works only with integer data type columns
// $users = User::max("age");
// $users = User::sum("age");
// $users = User::where("city","Delhi")->get();
// $users = User::where("city","Delhi")->where("age",">",20)->get(); //We can use multiple conditions as this way
// we can use multiple conditions as shown below :
// $users = User::where([
// ["city","Delhi"],
// ["age",">",20]
// ])->get();
// $users = User::where("city","Delhi")->orWhere("age",">",20)->get();
// $users = User::where("city","Delhi")->orWhere("age",">",20)->count();
// $users = User::whereCity("Delhi")->get();
// $users = User::whereCity("Delhi")->whereAge(20)->get();
// $users = User::whereCity("Delhi")->whereAge(20)->select("name","email")->get(); //To fetch particular column data
// $users = User::whereCity("Delhi")->whereAge(20)->select("name as User Name","email as User Email Address")->get(); //Rename column name
// $users = User::whereCity("Delhi")->whereAge(20)->select("name as User Name","email as User Email Address")->toSql(); //Check for SQL Query whether there is any error or not in SQL
// $users = User::whereCity("Delhi")->whereAge(20)->select("name as User Name","email as User Email Address")->toRawSql();
// $users = User::whereCity("Delhi")->whereAge(20)->select("name as User Name","email as User Email Address")->dd();
// $users = User::whereCity("Delhi")->whereAge(20)->select("name as User Name","email as User Email Address")->ddRawSql();
// $users = User::whereCity("Delhi")->first(); //To fetch the first Record from database
// $users = User::where("age","<>",20)->get(); //we can write this SQL query as shown below :
// $users = User::whereNot("age",20)->get();
// $users = User::whereBetween("age",[20,22])->get(); //To get some records in range whose age between 20 to 22
// $users = User::whereNotBetween("age",[20,22])->get();
// $users = User::whereIn("city",["Delhi","Goa"])->get();
// $users = User::whereNotIn("city",["Delhi","Goa"])->get();
return view("home",compact("users"));
// return $users;
// foreach($users as $user) {
// echo $user->name . "<br>";
// }
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
return view("adduser");
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$request->validate([
"username" => "required|alpha",
"useremail" => "required|email",
"userage" => "required|numeric",
"usercity" => "required|alpha"
]);
// Method 1 : Insert Data in Database
// $user = new User;
// $user->name = $request->username;
// $user->email = $request->useremail;
// $user->age = $request->userage;
// $user->city = $request->usercity;
// $user->save();
// Method 2 : Mass Assignment method for inserting data in database
// Using create() method, we can assign Mass OR Bulk data in database
// By default, create() method is locked by Laravel framework So we have to unlock create() method then only we can use create() method
// we can unlock create() method by adding "protected $guarded" OR "protected $fillable" variable in Model Class File
User::create([
"name" => $request->username,
"email" => $request->useremail,
"age" => $request->userage,
"city" => $request->usercity
]);
return redirect()->route("user.index")->with("status","User Data Inserted Successfully.");
}
/**
* Display the specified resource.
*/
public function show(User $user)
{
$users = User::find($user->id);
return view("viewuser",compact("users"));
}
/**
* Show the form for editing the specified resource.
*/
public function edit(User $user)
{
$users = User::find($user->id);
return view("updateuser",compact("users"));
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, User $user)
{
$request->validate([
"username" => "required|alpha",
"useremail" => "required|email",
"userage" => "required|numeric",
"usercity" => "required|alpha"
]);
// Method 1 : For Update data in database
// $users = User::find($user->id);
// $user->name = $request->username;
// $user->email = $request->useremail;
// $user->age = $request->userage;
// $user->city = $request->usercity;
// $user->save();
// Method 2 : Mass Update method for update data in database
$user = User::where("id",$user->id)->update([
"name" => $request->username,
"email" => $request->useremail,
"age" => $request->userage,
"city" => $request->usercity
]);
return redirect()->route("user.index")->with("status","User Data Updated Successfully.");
}
/**
* Remove the specified resource from storage.
*/
public function destroy(User $user)
{
// Method 1 : For delete record from database
$user = User::find($user->id);
$user->delete();
// User::truncate();//truncate() method will delete all records from database and reset auto-increment id column in database
// Method 2 : For delete record from database
// User::destroy($user->id);
return redirect()->route("user.index")->with("status","User Data Deleted Successfully.");
}
}
Above File is app\Http\Controllers\UserController.php FileBelow File is app\Models\User.php File
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
public $timestamps = false;
// protected $guarded = []; //we can write $guarded OR $fillable variable
protected $fillable = ["name","email","age","city"];
}
Above File is database\migrations\2024_12_06_065530_create_users_table.php File
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string("name");
$table->string("email");
$table->integer("age");
$table->string("city");
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('users');
}
};
Above File is resources\views\adduser.blade.php File
@extends("layout")
@section("title")
Add New User
@endsection
@section("content")
<form action="{{ route("user.store") }}" method="POST">
@csrf
<div class="mb-3">
<label for="username" class="form-label">User Name</label>
<input type="text" class="form-control @error("username") is-invalid @enderror" name="username" placeholder="Enter Username">
<span class="text-danger">
@error("username")
{{ $message }}
@enderror
</span>
</div>
<div class="mb-3">
<label for="useremail" class="form-label">User Email</label>
<input type="email" class="form-control @error("useremail") is-invalid @enderror" name="useremail" placeholder="Enter Useremail">
<span class="text-danger">
@error("useremail")
{{ $message }}
@enderror
</span>
</div>
<div class="mb-3">
<label for="userage" class="form-label">User Age</label>
<input type="number" class="form-control @error("userage") is-invalid @enderror" name="userage" placeholder="Enter Age">
<span class="text-danger">
@error("userage")
{{ $message }}
@enderror
</span>
</div>
<div class="mb-3">
<label for="usercity" class="form-label">User City</label>
<input type="text" class="form-control @error("usercity") is-invalid @enderror" name="usercity" placeholder="Enter City">
<span class="text-danger">
@error("usercity")
{{ $message }}
@enderror
</span>
</div>
<div class="mb-3">
<input type="submit" value="Save" class="btn btn-success">
</div>
</form>
@endsection
Above File is resources\views\home.blade.php File
@extends("layout")
@section("title")
All Users Data
@endsection
@section("content")
<a href="{{ route("user.create") }}" class="btn btn-success btn-sm mb-3">Add New</a>
<table class="table table-striped table-bordered table mt-2">
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Age</th>
<th>City</th>
<th>View</th>
<th>Delete</th>
<th>Update</th>
</tr>
@foreach($users as $data)
<tr>
<td>{{ $data->id }}</td>
<td>{{ $data->name }}</td>
<td>{{ $data->email }}</td>
<td>{{ $data->age }}</td>
<td>{{ $data->city }}</td>
<td><a href="{{ route("user.show",$data->id) }}" class="btn btn-primary btn-sm">View</a></td>
<td>
<form action="{{ route("user.destroy",$data->id) }}" method="POST">
@csrf
@method("DELETE")
<button type="submit" class="btn btn-danger btn-sm">Delete</button>
</form>
</td>
<td><a href="{{ route("user.edit",$data->id) }}" class="btn btn-warning btn-sm">Update</a></td>
</tr>
@endforeach
</table>
<div class="mt-4">
{{ $users->links() }}
</div>
@endsection
Above File is resources\views\layout.blade.php File
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>WelcomeTwo</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-10 bg-info text-center py-2">
<h3>Eloquent CRUD</h3>
</div>
</div>
<div class="row">
<div class="col-10 bg-warning-subtle text-center mb-3">
<h4>@yield("title")</h4>
</div>
</div>
<div class="row">
<div class="col-10">
@if(session("status"))
<div class="alert alert-success">
{{ session("status") }}
</div>
@endif
</div>
</div>
<div class="row">
<div class="col-10">
@yield("content")
</div>
</div>
</div>
</body>
</html>
Above File is resources\views\updateuser.blade.php File
@extends("layout")
@section("title")
Update User Data
@endsection
@section("content")
<form action="{{ route("user.update",$users->id) }}" method="POST">
@csrf
@method("PUT")
<div class="mb-3">
<label for="username" class="form-label">User Name</label>
<input type="text" value={{ $users->name }} class="form-control @error("username") is-invalid @enderror" name="username" placeholder="Enter Username">
<span class="text-danger">
@error("username")
{{ $message }}
@enderror
</span>
</div>
<div class="mb-3">
<label for="useremail" class="form-label">User Email</label>
<input type="email" value={{ $users->email }} class="form-control @error("useremail") is-invalid @enderror" name="useremail" placeholder="Enter Useremail">
<span class="text-danger">
@error("useremail")
{{ $message }}
@enderror
</span>
</div>
<div class="mb-3">
<label for="userage" class="form-label">User Age</label>
<input type="number" value={{ $users->age }} class="form-control @error("userage") is-invalid @enderror" name="userage" placeholder="Enter Age">
<span class="text-danger">
@error("userage")
{{ $message }}
@enderror
</span>
</div>
<div class="mb-3">
<label for="usercity" class="form-label">User City</label>
<input type="text" value={{ $users->city }} class="form-control @error("usercity") is-invalid @enderror" name="usercity" placeholder="Enter City">
<span class="text-danger">
@error("usercity")
{{ $message }}
@enderror
</span>
</div>
<div class="mb-3">
<input type="submit" value="Save" class="btn btn-success">
</div>
</form>
@endsection
Above File is resources\views\viewuser.blade.php File
@extends("layout")
@section("title")
User Detail
@endsection
@section("content")
<table class="table table-striped table-bordered table-hover">
<tr>
<th width="80px">Name : </th>
<td>{{ $users->name }}</td>
</tr>
<tr>
<th>Email : </th>
<td>{{ $users->email }}</td>
</tr>
<tr>
<th>Age : </th>
<td>{{ $users->age }}</td>
</tr>
<tr>
<th>City : </th>
<td>{{ $users->city }}</td>
</tr>
</table>
<a href="{{ route("user.index") }}" class="btn btn-danger">Back</a>
@endsection
Above File is routes\web.php File
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
.png)
Comments
Post a Comment