laravel 如何编写通过拉腊斯坦测试的规则

yws3nbqq  于 2023-05-08  发布在  其他
关注(0)|答案(3)|浏览(97)

我正在努力处理验证规则的返回代码,以通过“Larastan”测试。
此规则的代码为:

public function rules(): array
{
    return [
        'name' => [
            'required',
            Rule::unique('domains', 'name')->where(function ($query) {
                return $query->where('organization_id', $this->route('organization')->id);
            })
        ]
    ];
}

而larastan的错误是:

Cannot access property $id on object|string|null.

我的问题是如何编写此规则以确保它通过拉腊斯坦测试?当然,我可以在** neon **文件中添加一个“ignoreErrors”。但我宁愿避免。

1bqhqjot

1bqhqjot1#

添加if语句应该可以修复静态代码分析

public function rules(): array
{
    return [
        'name' => [
            'required',
            Rule::unique('domains', 'name')->where(function ($query) {
                $organization = $this->route('organization');
                if (!$organization || !$organization->id) {
                  throw new \Exception("No organization id ?");
                }
                return $query->where('organization_id', $organization->id);
            })
        ]
    ];
}
vhmi4jdf

vhmi4jdf2#

试试这个:

public function rules(): array
{
    return [
        'name' => [
            'required',
            Rule::unique('domains', 'name')->where(function () {
                $organizationId = $this->route('organization')->id;
                return function ($query) use ($organizationId) {
                    return $query->where('organization_id', $organizationId);
                };
            })
        ]
    ];
}
qcbq4gxm

qcbq4gxm3#

我尝试了下面的两种解决方案。没有成功。
我暂时搁置。我选择了一个简单的解决方案。我在 neon 中添加了一行代码来忽略这个错误。

ignoreErrors: 
- '#Cannot access property \$[a-zA-Z0-9]#'

相关问题