这是应该创建存储库的方式吗?

时间:2017-08-13 15:49:22

标签: php laravel laravel-5 repository-pattern

我第一次使用带有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->评论的实际行?或者我不明白它是如何正常工作的?

0 个答案:

没有答案