我正在使用Lumen作为REST API。我有一个帖子模型和一个评论模型。
后.php
public function comments(){
return $this->hasMany('AppComment');
}
注释.php
public function post(){
return $this->belongsTo('AppPost');
}
我还有这两种模型的资源控制器。如果我想获得对特定帖子的所有评论,我在哪里写这个逻辑?在帖子控制器中(因为我将按帖子过滤评论(还是在评论控制器中(因为我毕竟正在获取评论(?哪种方法更好?还是完全有其他方法(例如创建一个单独的控制器(?我只想获得正确的结构并编写干净的代码。任何帮助将不胜感激。
我个人喜欢遵循控制器没有任何自定义方法的模式。因此,您最终会得到许多非常薄的控制器,这些控制器具有通用资源方法,例如 index
update
store
create
edit
destroy
。
所以为你的例子我会/Posts/CommentController.php
资源方法
这取决于实际要求以及您如何处理数据。通常,帖子列表页面上不会显示任何评论。因此,最好只发送没有评论的帖子,这意味着逻辑将在帖子控制器中。对于帖子详细信息页面,您将发送带有评论的帖子,因此逻辑仍将在帖子控制器中。像这样:
Post::where('id', $id)->with('comments')->first();
如果您只需要为没有帖子对象的特定帖子发送评论,它将在评论控制器中。
Comment::where('post_id', $post_id)->get();
如果你有任何困惑,请问我。