假设我们有两个模型:Users
和Posts
。 这些模型之间定义了多对多关系 - 用户可以有很多帖子,帖子可以有很多编辑者(用户)。
当此表单提交给PostsController
时,它的store
操作不仅要处理新帖子的字段,还要处理它的编辑,这似乎不对。示例:
public function store()
{
// creating a post
$post = Post::create(request()->get('post_fields'));
// adding editors to the post (this should be done somewhere else)
$editors = request()->get('editors');
foreach($editors as $editor){
$post->editors()->attach($editor->id);
}
return redirect('/');
}
正如我已经提到的,这种做法对我来说似乎是错误和笨拙的。因此,我希望委派编辑处理任务到PostsEditorsController
,这将是一个专门用于posts-editors
关系管理的独立控制器。所以store
现在看起来像这样:
public function store()
{
// creating a post
$post = Post::create(request()->get('post_fields'));
$editors = request()->get('editors');
PostsEditorsController::doSomething($post, $editors); // <-- just to show what I want to achieve
return redirect('/');
}
我该怎么做?
答案 0 :(得分:1)
如何将此逻辑添加到Post模型的保存事件中?
https://laravel.com/docs/5.2/eloquent#events
这样,这个逻辑会在模型保存的时候调用 ,如果你在系统中的任何其他位置添加编辑功能,可以省去担心保持同步的麻烦。