我第一次使用带有laravel的存储库模式,我想出了这样一个存储库:
namespace App\Repositories\Comment;
use App\Repositories\Comment\CommentInterface;
use App\Models\Comment;
class CommentRepository implements CommentInterface {
public function all() {
return Comment::all();
}
public function count() {
return $this->all()->count();
}
public function like($id) {
return Comment::where('comment_id', $id)->increment('likes');
}
public function dislike($id) {
return Comment::where('comment_id', $id)->increment('dislikes');
}
public function likes($id) {
return Comment::where('comment_id', $id)->likes;
}
public function dislikes($id) {
return Comment::where('comment_id', $id)->dislikes;
}
}
但现在我在想是否这是一个好方法呢?因为当我需要使用存储库时,我总是需要以某种方式传递我想要定位的注释的ID。 在互联网上,我看到了一些例子,其中在存储库构造函数中有一个带有Comment模型的参数(在本例中)。这样我就可以删除Comment并用$ this->注释更改它,但问题是,它只与一个模型实例相关吗?例如,如果我在回购中有一个方法:
public function delete() {
return $this->comment->delete();
}
所以不会删除引用$ this->评论的实际行?或者我不明白它是如何正常工作的?