Laravel - система комментариев

Я пытаюсь создать систему комментариев для своего приложения, в котором у меня есть студенческие курсы и уроки. У каждого курса разные уроки, и я хочу, чтобы на каждом уроке отображались разные комментарии, оставленные в разделе комментариев. Однако я застрял в хранении комментария только для урока с 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>

Заранее спасибо :)

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
0
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В вашем контроллере комментариев я бы распечатал входящий идентификатор или как-нибудь его зарегистрировал. Это гарантирует, что вы получаете правильный идентификатор урока и что форма, в которой вы отправляете комментарий, не только отправляет $ id = 1. Если все в порядке, то я не уверен, что вам нужен следующий код

$lesson = Lesson::find($id);
$lesson_id = $lesson->id;

Вместо этого вы должны иметь возможность делать $lesson_id = $id;

Я распечатал его и получаю id = 1 только тогда, когда в то же время на маршруте отображается другой идентификатор урока. Идк, где все идет не так

newToThis 14.06.2018 22:53

Ну, это где-то между вашим маршрутом и вашим контроллером. Я бы сначала проверил форму, которую вы используете, чтобы отправить информацию о комментарии.

Rohlex32 14.06.2018 23:27

Другие вопросы по теме