MaterialBoxService.php 843 B

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