40 lines
1012 B
PHP
40 lines
1012 B
PHP
<?php
|
|
|
|
namespace App\ModelFilters;
|
|
|
|
use App\Models\AdminUser;
|
|
use EloquentFilter\ModelFilter;
|
|
use Illuminate\Support\Facades\Auth;
|
|
|
|
class CropYieldFilter extends ModelFilter
|
|
{
|
|
public function year($y)
|
|
{
|
|
$y = $y ?? date('Y'); //默认当前年份
|
|
|
|
return $this->where('time_year', $y);
|
|
}
|
|
|
|
public function quarter($quarter){
|
|
return $this->where('quarter', $quarter);
|
|
}
|
|
|
|
public function crop($cropId)
|
|
{
|
|
return $this->where('crop_id', $cropId);
|
|
}
|
|
|
|
public function type($type)
|
|
{
|
|
return $this->whereHas('base', function($q) use ($type) {
|
|
return $q->when($type == 1, function ($builder) {
|
|
$user = Auth::user();
|
|
|
|
if ($user instanceof AdminUser && ! $user->isAdministrator() && ! $user->view_all_bases) {
|
|
$builder->whereRaw("id in (select base_id from admin_user_bases where user_id = {$user->id})");
|
|
}
|
|
})->where('type', $type);
|
|
});
|
|
}
|
|
}
|