در این کد، از Delete و Update برای تغییر داده My SQL استفاده کردهام، متاسفانه Update آن کار نمیکند و هیچ خطایی هم نمیدهد و مستقیم به جدول اصلی من برمیگردد بدون آن که تغییری کرده باشد، علت آن چیست؟
همچنین نام جدول من members است. زمانی که از echo استفاده میکنم اطلاعات به روز را نشان میدهد اما زمانی که اطلاعات را ذخیره کرده و به جدول اصلی redirect میکنم، تغییری را مشاهده نمیکنم، امکانش هست راهنمایی بفرمایید.
کد List:
<h1>Member List</h1>
<table border="1">
<tr>
<td>Id</td>
<td>Name</td>
<td>Email</td>
<td>Address</td>
<td>Operation</td>
</tr>
@foreach($members as $Member)
<tr>
<td>{{$Member['Id']}}</td>
<td>{{$Member['Name']}}</td>
<td>{{$Member['Email']}}</td>
<td>{{$Member['Address']}}</td>
<td>
<a href={{"delete/".$Member['Id']}}>Delete</a>
<a href={{"edit/".$Member['Id']}}>Edit</a>
</td>
</tr>
@endforeach
</table>
کد Route:
Route::get("list",[MemberController::class,'list']);
Route::get("delete/{Id}",[MemberController::class,'delete']);
Route::get("edit/{Id}",[MemberController::class,'showData']);
Route::post("edit",[MemberController::class,'update']);
کد Edit:
<h1>Update Member</h1>
<form action="/edit" method="POST">
@CSRF
<input type="hidden" name="Id" value="{{$Member['Id']}}"> <br> <br>
<input type="text" name="Name" value="{{$Member['Name']}}"> <br> <br>
<input type="text" name="Email" value="{{$Member['Email']}}"> <br> <br>
<input type="text" name="Address" value="{{$Member['Address']}}"> <br> <br>
<button type="submit">Update</button>
</form>
کد Controller:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Member;
USE DB;
class MemberController extends Controller
{
//
function list()
{
$Member=Member::all();
return view('list',['members'=>$Member]);
}
public function delete($Id)
{
$Member=Member::find($Id);
$Member->where('Id',$Id)->delete();
return redirect('list');
}
function showData($Id)
{
$Member=Member::find($Id);
return view('edit',['Member'=>$Member]);
}
function update(Request $req)
{
$Member=Member::find($req->Id);
$Member->Name=$req->Name;
$Member->Email=$req->Email;
$Member->Address=$req->Address;
// $Member->save();
echo $Member;
// return redirect('list');
}
}
@abedim910
بله، این خط متاسفانه کار نمیکند و من به صورت کامنت آنجا آوردهام، زمانی که از echo استفاده میکنم، اطلاعات آپدیت شده را نشان میدهد اما زمانی که دو خط کامنت شده را استفاده میکنم، به جدول اصلی من بدون تغییر redirect میشود.
@ali.bayat
بله، داخل user.php این موارد لحاظ شده است.
protected $fillable = [
'Name',
'Email',
'Address'
// 'password',
];
سلام به این صورت اعمال کنید
function update(Request $req)
{
$Member = Member::find($req->Id);
DB::table('members')
->where('Id', $Member)
->update([
'Name'=>$req->Name,
'Email'=>$req->Email,
'Address'=>$req->Address,
]);
}
@Hossein.sadeGHi
زمانی که تابع update را تغییر میدهم، بعد از تغییر داده صفحه سفیدی باز میشود اما تغییر روی داده ایجاد نمیشود.
@Hossein.sadeGHi
البته من این دو خط را اضافه کردم، به جدول اصلی من بدون تغییر برمیگردد.
$Member->save();
return redirect('list');
بهتره شما تغییراتتون رو commit کنید و از try catch برای هندل کردن خطا استفاده کنید.
DB::beginTransaction();
try {
Member::where(['id' => $req->Id])->update(['Name' => $req->Name,'Email'=>$req->Email]);
DB::commit();
return 'true';
} catch (\Exception $exception) {
DB::rollBack();
return 'false';
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟