【问题标题】:Use Model Scope in Laravel Validation Rule在 Laravel 验证规则中使用模型范围
【发布时间】:2018-04-18 14:36:30
【问题描述】:

我有这样的规则:

Rule::exists('tokens', 'key')
    ->where(function ($q) {
        $q->where('state', 'unused');
    })

但我正在尝试访问实际的 Token 模型范围,因此我可以只执行 ->unused() 而不重复我的查询。

Rule::exists(\App\Models\Token::class, 'key')
    ->where(function ($q) {
        $q->unused();
    })

它似乎获得了一个查询生成器,但不是来自Token 模型。

我尝试了一些变化,将 Token 模型作为参数而不是 tokens 表名传递,但它只会为 call to undefined method 引发错误。

有没有办法做到这一点?

【问题讨论】:

    标签: php laravel laravel-5 laravel-validation


    【解决方案1】:

    正如您已经注意到的那样;您可以访问查询生成器而不是模型。您可以做的是新建一个模型并直接使用范围。

    use App\Models\Token;
    
    Rule::exists('tokens', 'key')
        ->where(function ($q) {
            (new Token)->scopeUnused($q);
        });
    

    【讨论】:

      猜你喜欢
      • 2020-05-15
      • 2014-06-26
      • 1970-01-01
      • 2015-12-01
      • 2017-12-01
      • 2014-04-22
      • 2019-12-14
      • 1970-01-01
      • 2018-02-22
      相关资源
      最近更新 更多