OracleBasSkuService.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace App\Services;
  3. use App\OracleBasSKU;
  4. use Illuminate\Support\Facades\DB;
  5. Class OracleBasSkuService
  6. {
  7. public function get(array $params){
  8. $query = $this->query($params);
  9. return $query->get();
  10. }
  11. public function count(array $params){
  12. $query = $this->query($params);
  13. return $query->count();
  14. }
  15. private function query(array $params){
  16. $query = OracleBasSKU::query();
  17. foreach ($params as $column => $value){
  18. if (is_array($value))$query->whereIn($column,$value);
  19. else $query->where($column,$value);
  20. }
  21. return $query;
  22. }
  23. public function getPiece(array $params,int $start, int $amount){
  24. $sql = "SELECT * FROM (SELECT ROWNUM rn,d.* FROM BAS_SKU d WHERE 1=1";
  25. foreach ($params as $column => $value){
  26. if (is_array($value)){
  27. if (count($value) < 1)return null;
  28. $sql .= " AND ".$column." IN (";
  29. foreach ($value as $i => $v){
  30. if ($i != 0)$sql .= ",";
  31. $sql .= "'".$v."'";
  32. }
  33. $sql .= ")";
  34. continue;
  35. }
  36. $sql .= " AND ".$column." = '".$value."'";
  37. }
  38. $sql .= " ORDER BY addtime)WHERE rn>".$start." AND rn <= ".($start+$amount);
  39. return DB::connection('oracle')->select(DB::raw($sql));
  40. }
  41. }