سلام دوستان. من به یه مشکلی برخورد کردم که هرچقدر گشتم جوابی نتونستم براش پیدا کنم خواستم از شما راهنمایی بگیرم.
من یه model به اسم courses دارم و با یک کنترلر resourse می خوام تو پنل مدیریتم یک سری دوره هارو مدیریت کنم. مشکل اینجاس که زمان ویراش کردن یا delete کردن route model binding من کار نمی کنه و اطلاعاتی را حذف نمی کنه (به طور کلی می شه گفت اصلا اطلاعاتی رو بر نمی گردونه از دیتابیس!)
نحوه کارمم اینجوری بوده که با چنین فرمی میرم به route مورد نظر و اطلاعات رو به کنترلر برای انجام تغییرات ارسال می کنم
<form action="{{ route('courses.destroy' , ['id' => $course->id]) }}" method="post">
{{ method_field('DELETE') }}
{{ csrf_field() }}
<div class="btn-group btn-group-xs">
<a href="{{ route('courses.edit' , ['id' => $course->id]) }}" class="btn btn-primary">ویرایش</a>
<button type="submit" class="btn btn-danger">حذف</button>
</div>
</form>
بعدش داخل کنترلرم به این صورت باید course مورد نظرمو دریافت کنم و مثلا عملیات delete رو انجام بدم
public function destroy(Courses $courses)
{
$courses->delete();
}
ولی خب تا اونجایی که مشخصه به route مورد نظرم میره ولی $courses هیچ اطلاعاتی رو برگشت نمی ده اصلا !
البته با یک روش دیگه کار رو انجام دادم و به نتیجه رسیدم. با این روش :
public function destroy($id)
{
$course = Courses::find($id);
$course->delete();
return redirect(route('courses.index'));
}
ولی خب می خوام بدونم علت چیه که اون روش اصلی که تا امروز خیلی هم خوب کار می کرد و ازش استفاده می کردم الان کار نمی کنه ! نمی فهمم مشکل کارم کجاست !
در تابع خودتون به شکل زیر عمل کنید :
public function destroy(Courses $course)
یعنی $courses رو به $course تغییر بدید.
protected $table = 'courses';
سلام
@ham.sarkhosh
کد route model binding رو که در لاراول قرار دادید رو هم بزارید
میتونید غیر از این روش route model binding از روش های دیگه هم استفاده کنید
request مورد نظر رو بگیرید
تو متد destroy یا update
از مدل مورد نظر یه شی بسازید و .... کار هارو روش انجام بدید
مرحله به مرحله از کدتون
dd()
بگیرید و خروجی رو ببینید.
در تابع خودتون به شکل زیر عمل کنید :
public function destroy(Courses $course)
یعنی $courses رو به $course تغییر بدید.
protected $table = 'courses';
@Alimotreb منظورتون رو از کد route model binding متوجه نمی شم! کدوم قسمت رو باید قرار بدم ؟
بعله. در ادامه گفتم که با روش دیگه ای انجام دادم و جواب گرفتم ولی خب دوست دارم بدونم مشکلم کجاست و علت اینکه این روش اول درست کار نمی کنه چیه. چون قبلا باهاش کار میکردم و درست بود همه چی.
@drcode.ir
خیلی ممنونم ازتون. کاملا درسته. حق با شما بود. وقتی متغییر رو به course تغییر دادم مشکل برطرف شد.
خیلی برام جالب بود این نکته. اصلا تا حالا بهش هیچ توجهی نکرده بود.
بازم ممنونم از راهنماییون
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟