Laravel Nova 指标过滤
Laravel Nova metrics filtering
我有一个名为 属性 的模型,它有一个 'active' 标志。我想要在我的资源顶部有一个指标,它显示活动属性的数量。
我的计算方法与文档中的完全相同,但这显示了所有属性而不是活动属性:
public function calculate(Request $request)
{
return $this->count($request, Property::class);
}
如何添加过滤器?
我试过 where 子句:
public function calculate(Request $request)
{
return $this->count($request, Property::class)->where('active','=',1);
}
以及查询范围:
public function calculate(Request $request)
{
return $this->count($request, Property::class)->active();
}
我想我也许可以使用我在资源列表页面上设置的 Nova 过滤器,但那似乎也不起作用。我敢肯定这真的很容易,但我还没有解决。感谢您的帮助!
您可以在 $model 参数中使用每种类型的 Eloquent\Builder 实例。
而不是:
public function calculate(Request $request)
{
return $this->count($request, Property::class);
}
为您的模型设置范围
App\Property.php
...
public function scopeActive($query)
{
return $query->where('active', 1);
}
public function scopeInactive($query)
{
return $query->where('active', 0);
}
并在你的计算方法中使用这个范围作为 $model 参数,因为范围 returns a Eloquent\Builder Instance
的调用
public function calculate(Request $request)
{
return $this->count($request, Property::active());
// return $this->count($request, Property::inactive());
}
编辑
当然,您可以使 Eloquent Builder 调用内联:
public function calculate(Request $request)
{
return $this->count($request, Property::where('active', 1));
}
我有一个名为 属性 的模型,它有一个 'active' 标志。我想要在我的资源顶部有一个指标,它显示活动属性的数量。
我的计算方法与文档中的完全相同,但这显示了所有属性而不是活动属性:
public function calculate(Request $request)
{
return $this->count($request, Property::class);
}
如何添加过滤器?
我试过 where 子句:
public function calculate(Request $request)
{
return $this->count($request, Property::class)->where('active','=',1);
}
以及查询范围:
public function calculate(Request $request)
{
return $this->count($request, Property::class)->active();
}
我想我也许可以使用我在资源列表页面上设置的 Nova 过滤器,但那似乎也不起作用。我敢肯定这真的很容易,但我还没有解决。感谢您的帮助!
您可以在 $model 参数中使用每种类型的 Eloquent\Builder 实例。
而不是:
public function calculate(Request $request)
{
return $this->count($request, Property::class);
}
为您的模型设置范围
App\Property.php
...
public function scopeActive($query)
{
return $query->where('active', 1);
}
public function scopeInactive($query)
{
return $query->where('active', 0);
}
并在你的计算方法中使用这个范围作为 $model 参数,因为范围 returns a Eloquent\Builder Instance
的调用public function calculate(Request $request)
{
return $this->count($request, Property::active());
// return $this->count($request, Property::inactive());
}
编辑 当然,您可以使 Eloquent Builder 调用内联:
public function calculate(Request $request)
{
return $this->count($request, Property::where('active', 1));
}