在Laravel验证规则中使用模型范围

时间:2017-11-06 12:14:17

标签: php laravel laravel-5 laravel-validation

我有这样的规则:

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

但是我试图访问实际的令牌模型范围,所以我只能->unused()而不重复我的查询。

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

它似乎是获取查询构建器,但不是来自Token模型。

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

有没有这样做?

1 个答案:

答案 0 :(得分:1)

你已经注意到了;您可以访问查询构建器而不是模型。您可以做的是新建模型并直接使用范围。

use App\Models\Token;

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