MaterialBoxModelService.php 1002 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. namespace App\Services;
  3. use App\Owner;
  4. use App\Traits\ServiceAppAop;
  5. use App\MaterialBoxModel;
  6. use Illuminate\Database\Eloquent\Collection;
  7. use Illuminate\Support\Facades\DB;
  8. class MaterialBoxModelService
  9. {
  10. use ServiceAppAop;
  11. protected $modelClass=MaterialBoxModel::class;
  12. /**
  13. * 获取货主的模型序列
  14. *
  15. * @param int|null $owner
  16. *
  17. * @return Collection
  18. */
  19. public function getModelSortedByOwner(?int $owner):Collection
  20. {
  21. $sequence = [];
  22. $sql = "(CASE id ";
  23. if (!$owner){
  24. $owner = Owner::query()->find($owner);
  25. if ($owner){
  26. $sequence = explode(",",$owner->model_sequence);
  27. foreach ($sequence as $index=>$s)$sql .= " WHEN {$s} THEN {$index}";
  28. $sql .= " END)";
  29. }
  30. }
  31. $query = MaterialBoxModel::query();
  32. if ($sequence)$query->whereIn("id",$sequence)->orderBy(DB::raw($sql));
  33. return $query->get();
  34. }
  35. }