【问题标题】:Laravel 5: Validate if field value exists if data source is not MYSQL but RepositoryLaravel 5:如果数据源不是 MYSQL 而是存储库,则验证字段值是否存在
【发布时间】:2016-12-21 15:03:28
【问题描述】:

我正在使用添加/更新/删除方法开发 REST API。

在控制器中,在更新操作中,我必须检查传递的 id 是否存在,我知道我可以使用 Laravel 验证器存在:表,列,但我在控制器内使用存储库

public function __construct(BookRepositoryInterface $bookRepository, Validator $validator)
{
    $this->bookRepository = $bookRepository;
    $this->validator = $validator;
}

存储库源可以不同于 mysql 数据库。 Laravel 验证器“存在”并非在所有情况下都有效。

这是通过 id 更新图书的代码。

public function update($id)
{
    $params = Input::only('title', 'author');

    $params['id'] = $id;

    $rules = array(
        'id' => 'required',
        'author' => 'required',
        'title' => 'required'

    );

    $validator = $this->validator->make($params, $rules);

     ...........
}

在更新期间检查图书存储库中是否存在 id 的最佳方法是什么?

【问题讨论】:

  • 制定一个自定义验证规则,使用您的存储库来验证记录是否存在。

标签: php validation laravel laravel-5 laravel-5.1


【解决方案1】:

为此,最好的方法是在存储库中使用 create 方法,并在存储库中运行验证。 在这种情况下,验证实现将依赖于存储库。

【讨论】:

  • 我认为验证不应该在存储库中进行。
  • 为什么你这么认为,这是确保验证依赖于存储库的最佳方式。
  • 验证应该像服务一样在上层完成(它有存储库对象)
  • Laravel Spark 也有类似的实现。合约正在调用一个交互,并且交互具有验证实现。
猜你喜欢
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
  • 2017-01-01
相关资源
最近更新 更多