ඒකකය 7: Update (දත්ත යාවත්කාලීන කිරීම)

CRUD හි "Update" ක්‍රියාවලිය දැන් සකස් කරමු. මෙහිදී, ශිෂ්‍ය ලැයිස්තුවේ ඇති දත්ත සංස්කරණය කිරීමට බොත්තමක් (button) එක් කර, එම බොත්තම ක්ලික් කළ විට පවතින දත්ත සමඟින් පෝරමයක් පෙන්වා, එම දත්ත යාවත්කාලීන කිරීමට සලස්වමු.

1. ශිෂ්‍ය ලැයිස්තුවට "Edit" බොත්තම එක් කිරීම

`resources/views/index.blade.php` ගොනුව විවෘත කර, table එකට "Actions" නමින් නව තීරුවක් (column) එක් කර, එක් එක් ශිෂ්‍යයා සඳහා "Edit" බොත්තමක් එක් කරන්න.

<!-- index.blade.php -->
<table class="table table-bordered table-striped">
    <thead>
        <tr>
            <!-- ... other headers -->
            <th>Actions</th> <!-- නව තීරුව -->
        </tr>
    </thead>
    <tbody>
        @foreach ($students as $student)
        <tr>
            <!-- ... other data cells -->
            <td>
                <a href="/edit/{{ $student->id }}" class="btn btn-warning btn-sm">Edit</a>
            </td>
        </tr>
        @endforeach
    </tbody>
</table>

2. සංස්කරණ පෝරමය (Edit Form) සෑදීම

`resources/views/` ෆෝල්ඩරය තුළ `edit.blade.php` නමින් නව ගොනුවක් සාදන්න. මෙම පෝරමය `create.blade.php` එකට සමාන වුවත්, මෙහිදී input fields වල `value` attribute එකට Controller එකෙන් එවන දත්ත යොදනු ලැබේ.

<!-- edit.blade.php -->
<form action="/update/{{ $student->id }}" method="POST">
    @csrf
    @method('PUT') <!-- HTML forms PUT requests සඳහා සහාය නොදක්වන නිසා මෙය යොදනු ලැබේ -->
    <div class="mb-3">
        <label>නම</label>
        <input type="text" name="name" class="form-control" value="{{ $student->name }}">
    </div>
    <!-- Email, Phone, Course සඳහාද ඉහත පරිදිම value attribute එක යොදන්න -->
    <button type="submit" class="btn btn-primary">යාවත්කාලීන කරන්න</button>
</form>

3. Controller Methods (`edit` மற்றும் `update`)

`StudentController.php` ගොනුවට ගොස්, සංස්කරණ පෝරමය පෙන්වීමට `edit` method එක සහ දත්ත යාවත්කාලීන කිරීමට `update` method එක එක් කරන්න.

// StudentController.php

// සංස්කරණ පෝරමය පෙන්වීමට
public function edit($id)
{
    $student = Student::find($id); // ID එකට අදාළ ශිෂ්‍යයා සොයාගැනීම
    return view('edit', compact('student')); // දත්ත සමඟ view එකට යොමු කිරීම
}

// දත්ත යාවත්කාලීන කිරීමට
public function update(Request $request, $id)
{
    $student = Student::find($id);
    
    // පෝරමයෙන් එන නව දත්ත පැවරීම
    $student->name = $request->input('name');
    $student->email = $request->input('email');
    $student->phone = $request->input('phone');
    $student->course = $request->input('course');
    
    $student->update(); // දත්ත යාවත්කාලීන කිරීම
    
    return redirect('/students')->with('status', 'ශිෂ්‍ය දත්ත සාර්ථකව යාවත්කාලීන කරන ලදී!');
}

4. Routes සැකසීම

අවසාන වශයෙන්, `routes/web.php` ගොනුවට ගොස් `edit` සහ `update` ක්‍රියාවලි සඳහා අවශ්‍ය routes දෙක එක් කරන්න.

// web.php

// සංස්කරණ පෝරමය පෙන්වීමට route
Route::get('/edit/{id}', [StudentController::class, 'edit']);

// දත්ත යාවත්කාලීන කිරීමට route
Route::put('/update/{id}', [StudentController::class, 'update']);

දැන් සියල්ල සම්පූර්ණයි! ✨ `php artisan serve` ක්‍රියාත්මක කර, `/students` පිටුවට ගොස් ඕනෑම ශිෂ්‍යයෙකුගේ "Edit" බොත්තම ක්ලික් කරන්න. දත්ත සංස්කරණය කර "යාවත්කාලීන කරන්න" බොත්තම ක්ලික් කළ විට, ඔබ නැවත ශිෂ්‍ය ලැයිස්තුව වෙත යොමු කෙරෙනු ඇත.