繁体   English   中英

Laravel-评论系统

[英]Laravel - comment system

我正在尝试为我的应用程序构建评论系统,其中有学生课程和课程。 每门课程都有不同的课程,我希望每节课程都能显示评论部分中留下的不同评论。 但是,我坚持只在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);
    } 
}

对于每门课程,我将显示相应的课程,并针对每节课程显示评论。

CommentController:

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是什么,或以某种方式记录它。 这将确保您收到正确的课程ID,并且提交评论的表单不仅发送$ id = 1。 如果一切正常,那么我不确定您需要以下代码

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

您应该可以执行$lesson_id = $id;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM