MaterialBoxService.php 789 B

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