MaterialBoxService.php 941 B

1234567891011121314151617181920212223242526272829303132333435
  1. <?php
  2. namespace App\Services;
  3. use App\MaterialBox;
  4. use Illuminate\Support\Collection;
  5. use Illuminate\Support\Facades\Cache;
  6. use App\Traits\ServiceAppAop;
  7. class MaterialBoxService
  8. {
  9. use ServiceAppAop;
  10. function get(array $kvPairs):?Collection{
  11. ksort($kvPairs);
  12. return Cache::remember('MaterialBox_'.md5(json_encode($kvPairs)), config('cache.expirations.rarelyChange'), function ()use($kvPairs) {
  13. $query = MaterialBox::query();
  14. foreach ($kvPairs as $column => $value){
  15. if (is_array($value))$query->whereIn($column,$value);
  16. else $query->where($column,$value);
  17. }
  18. return $query->get();
  19. });
  20. }
  21. function firstOrCreate(array $kvPairs){
  22. $materialBox=$this->get($kvPairs);
  23. if($materialBox->isNotEmpty())
  24. return $materialBox->first();
  25. return MaterialBox::query()->create($kvPairs);
  26. }
  27. }