App\Http\Controllers\NoticeCommentController::destroy() 的第一个参数必须是 App\NoticeComment 的实例,而不是 App\Notice 的实例。

3

我在laravel中遇到了问题,希望能看到这个:

图片描述

请帮助我。

NoticeCommentController.php:

public function destroy(NoticeComment $noticeComment)
{
    $noticeComment->delete();
}

但是这并没有起作用...

传递给App\Http\Controllers\NoticeCommentController::destroy()的第一个参数必须是App\NoticeComment的实例,而传递的是App\Notice的实例

问题出在哪里呢..?

我的代码在github上:https://github.com/jonsoku/homepage2


为什么不在destroy函数中像这样写$noticeComment = New NoticeComment;,而不是传递参数呢? - Gaurav Gupta
因为我不知道如何制作它。:( 因为我现在正在学习... 我该如何修复它?请帮帮我。 - JLtokyo
你正在将一个不同类的对象传递给函数。检查一下你到底传递了什么给这个函数。 在调用 destroy 函数之前,你可以使用 dd($noticeComment); 进行检查。 - Akshay Kulkarni
我使用React,所以无法查看该页面 :( - JLtokyo
请从标签中删除reactjs,它与React无关,是纯Laravel。 - Kyaw Kyaw Soe
1个回答

3

更改为如下内容

public function destroy(Notice $notice, NoticeComment $noticeComment)
{
    $noticeComment->delete();
}

解释

当你像这样定义嵌套资源

Route::resource('notices.noticeComments', 'NoticeCommentController');

你的路线将会是这样的:
notices/{notice}/noticeComments/{noticeComment}

您的第一个参数将是Notice,第二个参数是NoticeComment,希望这样能够帮到您。
您可以在此处阅读更多信息: https://laravel.com/docs/5.1/controllers#restful-nested-resources

@JLtokyo,我刚刚更新了我的答案,添加了描述和链接以获取更多信息。 - Kyaw Kyaw Soe
@JLtokyo 关注文档,Laravel 的所有内容都在文档中给出。 - Akshay Kulkarni
我有同样的问题,但我的问题有点不同,我有两个路由: Route::apiResource('classrooms.teachers', 'TeacherClassroomController'); Route::apiResource('teachers.classrooms', 'TeacherClassroomController'); 只有我的删除功能出现了问题: public function destroy(Teacher $teacher, Classroom $classroom) 当我尝试使用 classrooms/{classroom}/teachers/{teacher} 时不起作用。 - Thiago Valente

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接