在 Laravel 验证规则中使用模型范围
Use Model Scope in Laravel Validation Rule
我有这样的规则:
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
table 名称作为参数传递,但它只会抛出 call to undefined method
的错误。
有办法吗?
正如您已经注意到的;您可以访问查询生成器而不是模型。你可以做的是新建一个模型,直接使用示波器。
use App\Models\Token;
Rule::exists('tokens', 'key')
->where(function ($q) {
(new Token)->scopeUnused($q);
});
我有这样的规则:
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
table 名称作为参数传递,但它只会抛出 call to undefined method
的错误。
有办法吗?
正如您已经注意到的;您可以访问查询生成器而不是模型。你可以做的是新建一个模型,直接使用示波器。
use App\Models\Token;
Rule::exists('tokens', 'key')
->where(function ($q) {
(new Token)->scopeUnused($q);
});