Laravel-Eloquent Code位置-控制器或模型


Laravel - Eloquent Code location - controller or model

当使用雄辩的orm时,我正试图决定在控制器或模型中放置数据库逻辑。

在控制器中,我有以下方法:

public function postAdd(){
$amodel=new myModel();
$amodel->name=Input::get('name');
$amodel->save();
$id=$amodel->id;
}

指南是这样说的——然而,如果这种逻辑不在模型上的方法中而不是在控制器中?我知道上面仍然提供了数据库的抽象,但我不确定它的可重用性。。。或者可能不是这样。

因此,这样做是否是一个更好的选择:

public function postAdd(){
$amodel=new myModel();
$id = $amodel->addPost(Input::get('name'));
}

因此,我将信息传递给模型上的一个方法来完成工作。这允许它被重用,并且在不更新许多行代码的情况下根据需要更改模型方法?

答案可能只是"是的,按照你的建议做",在这种情况下很好,但我对使用这样的ORM时的标准做法感兴趣。

控制器的唯一职责是处理UI请求并将其委托给模型。这就是为什么它应该是瘦的。它应该只包含它所负责的内容所必需的代码。因此,这就是为什么您应该将代码移动到模型中,或者,在这种情况下,更好、更像Laravel的解决方案是使用存储库。(链接)