Я пытаюсь создать систему комментариев для своего приложения, в котором у меня есть студенческие курсы и уроки. У каждого курса разные уроки, и я хочу, чтобы на каждом уроке отображались разные комментарии, оставленные в разделе комментариев. Однако я застрял в хранении комментария только для урока с id = 1, и я не знаю, в чем проблема. Пробовали несколько решений, некоторые из них даже не работали.
Я установил отношения в модулях:
class Course extends Model{
protected $fillable=['name', 'language', 'description', 'semester_id','user_id'];
public function lesson(){
return $this->hasMany(Lesson::class,'courses_id');
}
}
class Lesson extends Model
{
protected $fillable=['courses_id', 'lesson', 'description'];
public function course(){
return $this->belongsTo(Course::class);
}
public function comments(){
return $this->hasMany(Comment::class);
}
}
class Comment extends Model
{
protected $fillable=['user_id', 'comment', 'lesson_id'];
public function lesson(){
return $this->belongsTo(Lesson::class);
}
}
Для каждого курса я показываю соответствующие уроки, а для каждого урока - комментарии.
Комментарии
public function store(Request $request, $id)
{
$this->validate($request, array(
'comment' => 'required|min:5|max:3000'
));
$user_id = Auth::id();
$lesson = Lesson::find($id);
$lesson_id = $lesson->id;
Comment::create([
'user_id' => $user_id,
'comment' => $request->comment,
'lesson_id' => $lesson_id
]);
return back();
}
Вид:
<form id = "comments-form" method = "POST" action = "{{url('/lessons/show/'.$course_id.'/'.$lesson->id.'/comments/'.$lesson_id)}}">
{{ csrf_field() }}
<div>
<textarea rows = "10" name = "comment" id = "comment" placeholder = "Comment"></textarea>
</div>
<div>
<input type = "submit" name = "submit" value = "Add Comment">
</div>
</form>
<div id = "comments-section">
@foreach($comments as $comment)
<div class = "comment">
<p><strong>Name:</strong> {{$user_name}}</p>
<p><strong>E-mail:</strong> {{$user_email}}</p>
<p><strong>Comment:</strong> {{$comment->comment}}</p>
</div>
@endforeach
</div>
Заранее спасибо :)

В вашем контроллере комментариев я бы распечатал входящий идентификатор или как-нибудь его зарегистрировал. Это гарантирует, что вы получаете правильный идентификатор урока и что форма, в которой вы отправляете комментарий, не только отправляет $ id = 1. Если все в порядке, то я не уверен, что вам нужен следующий код
$lesson = Lesson::find($id);
$lesson_id = $lesson->id;
Вместо этого вы должны иметь возможность делать $lesson_id = $id;
Ну, это где-то между вашим маршрутом и вашим контроллером. Я бы сначала проверил форму, которую вы используете, чтобы отправить информацию о комментарии.
Я распечатал его и получаю id = 1 только тогда, когда в то же время на маршруте отображается другой идентификатор урока. Идк, где все идет не так