Dre*_*ter 5 laravel laravel-5 laravel-nova
我有一个名为Property的模型,它有一个'active'标志.我想在我的资源顶部显示一个度量标准,显示活动属性的数量.
我的计算方法与文档中的完全相同,但这显示了所有属性而不是活动属性:
public function calculate(Request $request)
{
return $this->count($request, Property::class);
}
Run Code Online (Sandbox Code Playgroud)
如何添加过滤器?
我试过了where子句:
public function calculate(Request $request)
{
return $this->count($request, Property::class)->where('active','=',1);
}
Run Code Online (Sandbox Code Playgroud)
和查询范围:
public function calculate(Request $request)
{
return $this->count($request, Property::class)->active();
}
Run Code Online (Sandbox Code Playgroud)
我想我可能能够使用我在资源列表页面上设置的Nova过滤器,但这似乎也没有用.我确信这很容易,但我还没有解决.谢谢你的帮助!
Mar*_*rio 17
您可以在$ model参数中使用每种类型的Eloquent\Builder实例.
代替:
public function calculate(Request $request)
{
return $this->count($request, Property::class);
}
Run Code Online (Sandbox Code Playgroud)
在模型上设置范围
App\Property.php
...
public function scopeActive($query)
{
return $query->where('active', 1);
}
public function scopeInactive($query)
{
return $query->where('active', 0);
}
Run Code Online (Sandbox Code Playgroud)
并将此范围用作计算方法中的$ model参数,因为范围的调用返回Eloquent\Builder实例
public function calculate(Request $request)
{
return $this->count($request, Property::active());
// return $this->count($request, Property::inactive());
}
Run Code Online (Sandbox Code Playgroud)
编辑 当然,您可以使Eloquent Builder内联调用:
public function calculate(Request $request)
{
return $this->count($request, Property::where('active', 1));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2239 次 |
| 最近记录: |