| 1234567891011121314151617181920212223242526272829303132333435 |
- <?php
- namespace App\Services;
- use App\MaterialBox;
- use Illuminate\Support\Collection;
- use Illuminate\Support\Facades\Cache;
- use App\Traits\ServiceAppAop;
- class MaterialBoxService
- {
- use ServiceAppAop;
- function get(array $kvPairs):?Collection{
- ksort($kvPairs);
- return Cache::remember('MaterialBox_'.md5(json_encode($kvPairs)), config('cache.expirations.rarelyChange'), function ()use($kvPairs) {
- $query = MaterialBox::query();
- foreach ($kvPairs as $column => $value){
- if (is_array($value))$query->whereIn($column,$value);
- else $query->where($column,$value);
- }
- return $query->get();
- });
- }
- function firstOrCreate(array $kvPairs){
- $materialBox=$this->get($kvPairs);
- if($materialBox->isNotEmpty())
- return $materialBox->first();
- return MaterialBox::query()->create($kvPairs);
- }
- }
|