سلام موقع ریدایرکت شدن بعد از ویرایش مقدار اسلاگ رو نمیشناسه
ویرایش انجام میشه ولی ریدایرکت نمیشه
dd گرفتم
از
dd($reply->disscussion) مقدار نال برمیگردونه
رابطه یک به چند تو مدل ایجاد کردم
Trying to get property 'slug' of non-object
کنترلر
public function update(Reply $reply , Request $request)
{
$validData = $request->validate([
'content' => 'required' ,
]);
$reply->update($validData);
alert()->success('با موفقیت ویرایش شد' , 'با تشکر');
return redirect(route('discussion' , ['slug' => $reply->discussion->slug] ));
}
روت discussion
Route::get('discussions/edit/{slug}' , [DiscussionsController::class , 'edit'])->name('discussions.edit')->middleware('auth');
روت reply
Route::get('/reply/edit/{reply}' , [ReplyController::class , 'edit'])->name('reply.edit')->middleware('auth');
لطفا راهنمایی کنید
@codeLover
دوست گرامی توی مدل reply شما یک رابطه یک به یک رو ایجاد کردید با اسم discussions که آخرش حرف s داره ولی توی کنترلر شما این کد رو نوشتید reply->discussion که آخرش هیچ s ای نداره پس قاعدتا توی کنترلر به شما مقدار null برمی گردونه و داری از یک مقدار null که وجود نداره پارامتر slug پس لطفا یا توی مدل reply حرف s آخر رو حذف کنید (که منطقی تره) یا توی کنترل حرف s رو اضافه کنید
@codeLover
با سلام و وقت بخیر
خطای شما مربوط به اینه که دارید مقدار slug رو بر روی شی که وجود نداره یا مقدارش null برمی گردونید برای این کار دوتا اقدام باید انجام بدید اول validData رو چک بفرمایید که دقیقا همون پارامتر های که برای جدول reply نیاز دارید بهتون می ده چون انگار پارامتری که باعث می شه دو جدول reply و Discussion مقدار دهی نمی شه و در نتیحه رابطه ایی برقرار نمی شه بین دو جدول
دوم ستون های جداول رو چک کنید و کد مدل هاتون رو بررسی کنید
سلام خسته نباشید
اروری که من میبینیم میگه نمیتونه slug رو بگیره
و سوالم اینه که slug باهاش چیکار میکنی؟
@fakhraddin
@milwad
یک جدول discussion دارم و یک جدول reply که برای جدول reply کلید خارجی discussion_id در نظر گرفتم
و رابطه یک به چند ایجاد کردم
زمانی که یک discussion رو ویرایش میکنم از طریق اسلاگ انجام میشه و مشکلی نیست
حالا میخام برای reply هم وقتی ویرایش انجام میشه وارد همون discussion بشه با همون اسلاگ ولی مقدار نال برمیگردونه
نمیدونم چطوری این کارو انجام بدم که بعد از ویرایش وارد همون اسلاگ discussion بشه
مثل همین راکت وقتی یک پرسش و پاسخ رو ویرایش میکنیم
@codeLover
ببین تو اگه میخوای یه پیامی رو که مثلا فرض کن من الان ارسال کردم و زمانی که بخوام ادیت کنم دیگه برای reply اسلاگ نمیخواد فقط ایدی تو پیام و سوال رو بگیر و ابدیت کن همین
با ایدی ویرایش انجام میدم و انجام میشه
ولی وقتی میخام هدایت بشه به همون اسلاگی که برای پرسش هست این ارور نال نمایش میده
مشکل موقع ریدایرکت شدن صفحه هست
@codeLover
با سلام مجدد
دوست گرامی لطفا این قطعه کدهایی که ازتون می خوام ارسال بفرمایید جهت راهنمایی بیشتر شاید راه حل بهتری بشه پیشنهاد داد
@fakhraddin
سلام
مدل reply
protected $fillable = [
'user_id' , 'discussion_id' , 'best_answer' , 'content' ,
];
public function discussions()
{
return $this->belongsTo(Discussion::class);
}
مدل discussion
protected $fillable = [
'title' , 'slug' , 'content' , 'user_id' , 'channel_id'
];
public function replies()
{
return $this->hasMany(Reply::class);
}
link edit reply
<a href="{{ route('reply.edit' , $reply->id) }}" class="btn btn-outline-info">ویرایش</a>
فرم reply
<form action="{{ route('reply.update' , $reply->id ) }}" method="POST" enctype="multipart/form-data">
@csrf
@method('patch')
<div class="form-group">
<textarea name="content" id="content" class="form-control @error('content') is-invalid @enderror" cols="30" rows="10" placeholder="ویرایش پاسخ">{{ $reply->content }}</textarea>
@error('content')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="form-group mt-3">
<button class="btn btn-success" type="submit">ویرایش پاسخ</button>
</div>
</form>
@codeLover
دوست گرامی توی مدل reply شما یک رابطه یک به یک رو ایجاد کردید با اسم discussions که آخرش حرف s داره ولی توی کنترلر شما این کد رو نوشتید reply->discussion که آخرش هیچ s ای نداره پس قاعدتا توی کنترلر به شما مقدار null برمی گردونه و داری از یک مقدار null که وجود نداره پارامتر slug پس لطفا یا توی مدل reply حرف s آخر رو حذف کنید (که منطقی تره) یا توی کنترل حرف s رو اضافه کنید
بله کاملا درسته
مشکل من این بود که همش s رو تو کنترلر اضافه میکردم باز هم میدیدم به جواب نمیرسم
و باید تو مدل s رو حذف میکردم
ممنونم
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟