بروزرسانی(update) رکورد در لاراول، در این مقاله نحوه بروزرسانی رکورد جدول دیتابیس را بر اساس فرم طراحی شده یاد خواهیم گرفت.
بروزرسانی یا update همانند insert کردن اطلاعات است. در پروژه های بک اند ما فرم هایی رو جهت ویرایش اطلاعات داریم، این فرم ها بر اساس شناسه یا ID رکورد اطلاعات موجود رو دریافت و در نهایت بازنویسی یا بروزرسانی می کنند.
بنابراین نیاز هست یک شناسه برای صفحاتی که فرم edit در آن قرار دارد ارسال شود تا فرم ما از طریق آن شناسه رکوردی را که باید update شود شناسایی کند.
مرحله به مرحله با هم پیش میریم تا این روند رو در یک مثال کاربردی ببینیم و درک کنیم. اگر مراحل نصب و پیکربندی دیتابیس در لاراول و همچنین استفاده از “Tailwind CSS” رو نمی دونید در دسته مقاله های آموزشی لاراول می تونید این مقاله ها رو مطالعه بفرمایید.
مراحل بروزرسانی(update) رکورد در لاراول
1) من یک جدول به نام “posts” در دیتابیسی با نام “laravelapp” با فیلدهای تصویر زیر دارم.
یک پوشه به نام “blog” در پوشه “views” دارم که شامل فایل های “index.blade.php” جهت نمایش محتوای جدول و فایل دیگری به نام “edit.blade.php” شامل فرمی برای بروزرسانی رکوردها می باشد.
همچنین یک کنترلر با نام “PostController” برای مدیریت روت ها و متدها ایجاد کردم.
فایل روت “web.php” رو باز کنید و کدهای مربوط به روت های کنترلر رو به شکل زیر بنویسید.
Route::prefix('/blog')->group(function () {
Route::get('/create', [PostController::class, 'create'])->name('blog.create');
Route::get('/', [PostController::class, 'index'])->name('blog.index');
Route::get('/{id}', [PostController::class, 'show'])->name('blog.show');
Route::post('/', [PostController::class, 'store'])->name('blog.store');
Route::get('/edit/{id}', [PostController::class, 'edit'])->name('blog.edit');
Route::patch('/{id}', [PostController::class, 'update'])->name('blog.update');
Route::delete('/{id}', [PostController::class, 'destroy'])->name('blog.destroy');
});
روت مربوط به فایل “edit” که قرار هست پردازش بروزرسانی در آن انجام بشه در خط کد 6 می باشد.
2) در روت “index” که مربوط به نمایش محتوای جدول “posts” هست باید لینکی جهت ارسال شناسه رکورد مورد نظر جهت بروزسانی به صفحه “edit” تعریف کنیم.
مقدار “id” گرفته شده از یک حلقه foreach هست که برای نمایش محتوا تعریف شده، کدینگ کامل فایل “index” به صورت زیر می باشد.
Laravel App
@vite('resources/js/app.js')
All Articles
@foreach ($posts as $post)
{{ $post->title }}
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsa maiores nisi quasi tenetur voluptatem! At blanditiis dolor doloremque eaque, esse molestiae neque numquam quod repellat rerum sequi sit suscipit veritatis!
Made by:
Dary
on 13-07-2022
Edit
@endforeach
3) حالا باید شناسه ارسال شده رو از طریق متد “edit” در کنترلر دریافت و به صفحه “edit.blade.php” ارسال کنیم ولی قبلش نیاز هست یک Model برای ارتباط با دیتابیس ایجاد کنیم که در اینجا مدلی به نام Post در پروژه ایجاد شده است.
// PostController.php
public function edit($id)
{
return view('blog.edit', [
'post' => Post::where('id', $id)->first()
]);
}
در متد edit گفتیم که “id” دریافتی به صفحه “edit” که در پوشه “blog” قرار داره ارسال بشه به شرطی که مقدارش با مقدار موجود در ستون “id” جدول “post” برابر باشه.
4) وارد فایل “edit” میشم و کدهای زیر رو جهت دریافت محتوای رکورد ارسالی و قرار ادانشون در فیلدهای فرم می نویسم.
// edit.blade.php
Document
@vite('resources/js/app.js')
Edit: ID:{{ $post->id }} - Title:{{ $post->title }}
5) تو این مرحله باید داده هایی که از فرم صفحه “edit” دریافت می کنم رو پردازش کنم، برای اینکار وارد فایل کنترلر “PostController” میشم و متد “update” رو می نویسم.
public function update(Request $request, $id)
{
Post::where('id', $id)->update($request->except([
'_token', '_method'
]));
return redirect(route('blog.index'));
}
اگر مراحل رو به درستی طی کرده باشید الان پردازش بروزرسانی رو می تونید انجام بدید.
جمع بندی
در این مقاله سعی کردم آموزش برورسانی رکورد رو با استفاده از فرم در لاراول به همراه مثال توضیح بدم. امیدوارم این مطلب براتون مفید واقع شده باشه.
لطفا اگر نظر و پیشنهادی در خصوص مطالب و پیشبرد آنها دارید خوشحال میشم در قسمت دیدگاه ها مطرح بفرمایید.