अध्याय 9: CRUD एप्लिकेशन (CRUD Application)

अध्याय 9: CRUD एप्लिकेशन (CRUD Application)

इस अध्याय में, हम Laravel में CRUD (Create, Read, Update, Delete) एप्लिकेशन बनाने के बारे में जानेंगे। CRUD ऑपरेशन्स किसी भी वेब एप्लिकेशन का मुख्य हिस्सा होते हैं, क्योंकि ये उपयोगकर्ताओं को डेटा बनाने, पढ़ने, अपडेट करने और हटाने की अनुमति देते हैं। Laravel का Eloquent ORM और शक्तिशाली रूटिंग सिस्टम इन ऑपरेशन्स को सरल और प्रभावी बनाता है। इस अध्याय में, हम एक साधारण ब्लॉग एप्लिकेशन के माध्यम से CRUD ऑपरेशन्स को समझेंगे, जिसमें पोस्ट्स को बनाना, प्रदर्शित करना, संपादित करना, और हटाना शामिल होगा। आइए, Laravel में CRUD एप्लिकेशन की इस गहन यात्रा की शुरुआत करें और जानें कि कैसे आप अपने वेब एप्लिकेशन को अधिक इंटरैक्टिव और उपयोगी बना सकते हैं।

CRUD ऑपरेशन्स (Create, Read, Update, Delete)

Laravel में CRUD ऑपरेशन्स (Create, Read, Update, Delete) को प्रभावी ढंग से लागू करना Eloquent ORM और रूटिंग सिस्टम के साथ बहुत आसान है। इस खंड में, हम एक साधारण ब्लॉग एप्लिकेशन के माध्यम से CRUD ऑपरेशन्स को समझेंगे। आइए, हम प्रत्येक ऑपरेशन को विस्तार से देखें।

1. Create (बनाना)

डेटा बनाने के लिए हमें एक फॉर्म की आवश्यकता होती है, जहाँ उपयोगकर्ता अपने डेटा को दर्ज कर सकें। इसके बाद, हम उस डेटा को डेटाबेस में सहेजेंगे।

फॉर्म व्यू (Blade Template)

<!-- resources/views/posts/create.blade.php -->
<!DOCTYPE html>
<html>
<head>
    <title>Create Post</title>
</head>
<body>
    <h1>Create a New Post</h1>
    <form action="/posts" method="POST">
        @csrf
        <div>
            <label for="title">Title:</label>
            <input type="text" id="title" name="title" required>
        </div>
        <div>
            <label for="content">Content:</label>
            <textarea id="content" name="content" required></textarea>
        </div>
        <div>
            <button type="submit">Create Post</button>
        </div>
    </form>
</body>
</html>

रूट परिभाषित करना

use App\Http\Controllers\PostController;

Route::get('/posts/create', [PostController::class, 'create']);
Route::post('/posts', [PostController::class, 'store']);

कंट्रोलर मेथड्स

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Post;

class PostController extends Controller
{
    public function create()
    {
        return view('posts.create');
    }

    public function store(Request $request)
    {
        $validatedData = $request->validate([
            'title' => 'required|max:255',
            'content' => 'required',
        ]);

        $post = new Post;
        $post->title = $validatedData['title'];
        $post->content = $validatedData['content'];
        $post->save();

        return redirect('/posts')->with('success', 'Post created successfully!');
    }
}

?>

2. Read (पढ़ना)

डेटा को पढ़ने और प्रदर्शित करने के लिए हम डेटाबेस से डेटा प्राप्त करेंगे और उसे एक व्यू में प्रदर्शित करेंगे।

व्यू (Blade Template)

<!-- resources/views/posts/index.blade.php -->
<!DOCTYPE html>
<html>
<head>
    <title>All Posts</title>
</head>
<body>
    <h1>All Posts</h1>
    @foreach ($posts as $post)
        <div>
            <h2>{{ $post->title }}</h2>
            <p>{{ $post->content }}</p>
            <a href="/posts/{{ $post->id }}/edit">Edit</a>
            <form action="/posts/{{ $post->id }}" method="POST" style="display:inline;">
                @csrf
                @method('DELETE')
                <button type="submit">Delete</button>
            </form>
        </div>
    @endforeach
</body>
</html>

रूट परिभाषित करना

Route::get('/posts', [PostController::class, 'index']);

कंट्रोलर मेथड

public function index()

{

    $posts = Post::all();

    return view(‘posts.index’, compact(‘posts’));

}

3. Update (अपडेट करना)

डेटा को अपडेट करने के लिए हमें एक फॉर्म की आवश्यकता होती है, जहाँ उपयोगकर्ता मौजूदा डेटा को संपादित कर सके। इसके बाद, हम उस डेटा को डेटाबेस में अपडेट करेंगे।

फॉर्म व्यू (Blade Template)

<!-- resources/views/posts/edit.blade.php -->
<!DOCTYPE html>
<html>
<head>
    <title>Edit Post</title>
</head>
<body>
    <h1>Edit Post</h1>
    <form action="/posts/{{ $post->id }}" method="POST">
        @csrf
        @method('PUT')
        <div>
            <label for="title">Title:</label>
            <input type="text" id="title" name="title" value="{{ $post->title }}" required>
        </div>
        <div>
            <label for="content">Content:</label>
            <textarea id="content" name="content" required>{{ $post->content }}</textarea>
        </div>
        <div>
            <button type="submit">Update Post</button>
        </div>
    </form>
</body>
</html>

रूट परिभाषित करना

php
Copy code
Route::get('/posts/{post}/edit', [PostController::class, 'edit']);
Route::put('/posts/{post}', [PostController::class, 'update']);

कंट्रोलर मेथड्स

public function edit(Post $post)
{
    return view('posts.edit', compact('post'));
}

public function update(Request $request, Post $post)
{
    $validatedData = $request->validate([
        'title' => 'required|max:255',
        'content' => 'required',
    ]);

    $post->title = $validatedData['title'];
    $post->content = $validatedData['content'];
    $post->save();

    return redirect('/posts')->with('success', 'Post updated successfully!');
}

4. Delete (हटाना)

डेटा को हटाने के लिए हमें एक फॉर्म की आवश्यकता होती है, जो DELETE अनुरोध भेजेगा। इसके बाद, हम उस डेटा को डेटाबेस से हटा देंगे।

रूट परिभाषित करना

Route::delete('/posts/{post}', [PostController::class, 'destroy']);

कंट्रोलर मेथड

public function destroy(Post $post)
{
    $post->delete();
    return redirect('/posts')->with('success', 'Post deleted successfully!');
}

Laravel में CRUD ऑपरेशन्स को लागू करना Eloquent ORM और रूटिंग सिस्टम के साथ बेहद सरल और प्रभावी है। इस गाइड के माध्यम से, आप अपने एप्लिकेशन में CRUD फंक्शनलिटी को आसानी से जोड़ सकते हैं और इसे उपयोगकर्ता-अनुकूल बना सकते हैं।

डेटाबेस ऑपरेशन्स (Database Operations)

Laravel का Eloquent ORM आपको डेटाबेस के साथ इंटरैक्ट करने का एक सरल और शक्तिशाली तरीका प्रदान करता है। डेटाबेस ऑपरेशन्स जैसे कि डेटा बनाना, पढ़ना, अपडेट करना, और हटाना (CRUD) को Eloquent ORM के माध्यम से करना बेहद आसान है। आइए, हम डेटाबेस ऑपरेशन्स के विभिन्न पहलुओं को समझें।

1. Create (डेटा बनाना)

डेटाबेस में नया रिकॉर्ड जोड़ने के लिए, आप Eloquent मॉडल का उपयोग कर सकते हैं।

उदाहरण: नया पोस्ट बनाना

use App\Models\Post;

// नया पोस्ट बनाएं
$post = new Post;
$post->title = 'New Post Title';
$post->content = 'This is the content of the new post.';
$post->save();

आप create मेथड का उपयोग भी कर सकते हैं, लेकिन इसके लिए आपको मॉडल में fillable गुण को परिभाषित करना होगा।

उदाहरण: create मेथड का उपयोग

// Post मॉडल में fillable गुण जोड़ें
protected $fillable = ['title', 'content'];

// नया पोस्ट बनाएं
Post::create([
    'title' => 'New Post Title',
    'content' => 'This is the content of the new post.',
]);

2. Read (डेटा पढ़ना)

डेटाबेस से डेटा पढ़ने के लिए, आप Eloquent मॉडल की विभिन्न मेथड्स का उपयोग कर सकते हैं।

उदाहरण: सभी पोस्ट प्राप्त करना

use App\Models\Post;

// सभी पोस्ट प्राप्त करें
$posts = Post::all();

उदाहरण: एक विशिष्ट पोस्ट प्राप्त करना

// एक विशिष्ट पोस्ट प्राप्त करें
$post = Post::find(1);

उदाहरण: फिल्टर करके पोस्ट प्राप्त करना

// प्रकाशित पोस्ट प्राप्त करें
$publishedPosts = Post::where('status', 'published')->get();

3. Update (डेटा अपडेट करना)

डेटाबेस में मौजूदा रिकॉर्ड को अपडेट करने के लिए, आप Eloquent मॉडल का उपयोग कर सकते हैं।

उदाहरण: एक पोस्ट को अपडेट करना

use App\Models\Post;

// पोस्ट प्राप्त करें और अपडेट करें
$post = Post::find(1);
$post->title = 'Updated Post Title';
$post->content = 'This is the updated content of the post.';
$post->save();

आप update मेथड का उपयोग भी कर सकते हैं।

उदाहरण: update मेथड का उपयोग

// पोस्ट को अपडेट करें
Post::where('id', 1)->update(['title' => 'Updated Post Title', 'content' => 'This is the updated content of the post.']);

4. Delete (डेटा हटाना)

डेटाबेस से मौजूदा रिकॉर्ड को हटाने के लिए, आप Eloquent मॉडल का उपयोग कर सकते हैं।

उदाहरण: एक पोस्ट को हटाना

use App\Models\Post;

// पोस्ट प्राप्त करें और हटाएं
$post = Post::find(1);
$post->delete();

आप destroy मेथड का उपयोग भी कर सकते हैं।

उदाहरण: destroy मेथड का उपयोग

// पोस्ट को हटाएं
Post::destroy(1);

5. अन्य डेटाबेस ऑपरेशन्स (Other Database Operations)

काउंट करना (Counting)

use App\Models\Post;

// सभी पोस्ट की गिनती करें
$postCount = Post::count();

मैक्सिमम और मिनिमम प्राप्त करना (Getting Maximum and Minimum)

// सबसे पुराना पोस्ट प्राप्त करें
$oldestPost = Post::orderBy('created_at', 'asc')->first();

// सबसे नया पोस्ट प्राप्त करें
$newestPost = Post::orderBy('created_at', 'desc')->first();

समूहबद्ध करना (Grouping)

use Illuminate\Support\Facades\DB;

// पोस्ट्स को स्थिति के अनुसार समूहबद्ध करना
$postsByStatus = DB::table('posts')
    .select(DB::raw('count(*) as post_count, status'))
    .groupBy('status')
    .get();

Laravel का Eloquent ORM आपको डेटाबेस ऑपरेशन्स को सहज और प्रभावी ढंग से निष्पादित करने की सुविधा देता है। इन ऑपरेशन्स के माध्यम से आप अपने एप्लिकेशन के डेटा को आसानी से प्रबंधित और मैनिपुलेट कर सकते हैं, जिससे आपके एप्लिकेशन की कार्यक्षमता बढ़ती है।



Index