所以,我有2个名为'主题'和'发布'。
主题是针对帖子的主要内容和帖子的回复。
所以,我想如果用户删除了它的主题,那么它的后续回复/帖子也应该被删除。
这是我的删除表单:
{!! Form::open(['action' => ['TopicController@destroy', $topic->id], 'method' => 'POST', 'class' => 'pull-right']) !!}
{{ Form::hidden('_method', 'DELETE') }}
{{ Form::submit('Delete', ['class' => 'btn btn-danger']) }}
{!! Form::close() !!}
这是控制器:
$topic = Topic::find($id);
$post = Post::where('topic_id', $id)->get();
$topic->delete();
$post->delete();
return redirect('/')->with('Success', 'Post Removed');
但它给出了错误:
BadMethodCallException
Method delete does not exist.
这里做错了什么?
答案 0 :(得分:1)
使用级联删除。
来自the docs:
您也可以为"删除"指定所需的操作。和"更新"约束的属性
在posts
表迁移中定义外键约束:
$table->foreign('topic_id')
->references('id')
->on('topics')
->onDelete('cascade');
重新创建表格,在删除主题时将自动删除与该主题相关的所有帖子。
https://laravel.com/docs/5.5/migrations#foreign-key-constraints
答案 1 :(得分:0)
Plan1
Plan2
答案 2 :(得分:0)
您应该在主题,帖子和回复模型中使用关系,以显示每个回复属于帖子。