From 70b6ac0642a90c09218ef37876c37b962e84ceb3 Mon Sep 17 00:00:00 2001 From: denghy Date: Tue, 7 Jan 2020 10:29:58 +0800 Subject: [PATCH] orgModel --- .../Concerns/OrderCardConcern.php | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/app/Domains/Virtual/Repositories/Concerns/OrderCardConcern.php b/app/Domains/Virtual/Repositories/Concerns/OrderCardConcern.php index 58ba2ebf..fcfc71f6 100644 --- a/app/Domains/Virtual/Repositories/Concerns/OrderCardConcern.php +++ b/app/Domains/Virtual/Repositories/Concerns/OrderCardConcern.php @@ -24,7 +24,9 @@ trait OrderCardConcern */ public function withConditions(array $conditions = []) { - $this->model = $this->model->where(function ($query) use ($conditions) { + $orgModel = $this->getModel(); + + $this->model = $this->model->where(function ($query) use ($conditions, $orgModel) { if (isset($conditions['id'])) { $conditions['id'] = array_wrap($conditions['id']); $query->whereIn('id', $conditions['id']); @@ -168,12 +170,12 @@ trait OrderCardConcern } if (isset($conditions['sell_starttime']) && isset($conditions['sell_endtime'])) { - $query->whereRaw(sprintf("exists (SELECT sim FROM virtual_order_cards_partition AS p WHERE %s.sim = p.sim AND type in (0, 1) AND created_at >= '%s' AND created_at <= '%s' AND deleted_at is null AND refunded_at is null)", $this->getTable(), $conditions['sell_starttime'], $conditions['sell_endtime'])); + $query->whereRaw(sprintf("exists (SELECT sim FROM virtual_order_cards_partition AS p WHERE %s.sim = p.sim AND type in (0, 1) AND created_at >= '%s' AND created_at <= '%s' AND deleted_at is null AND refunded_at is null)", $orgModel->getTable(), $conditions['sell_starttime'], $conditions['sell_endtime'])); } if (isset($conditions['has_type']) && !empty($conditions['has_type'])) { $conditions['has_type'] = array_wrap($conditions['has_type']); - $query->whereRaw(sprintf("exists (SELECT sim from virtual_order_cards_partition AS p WHERE %s.sim = p.sim AND type in (%s))", $this->getTable(), implode(',', $conditions['has_type']))); + $query->whereRaw(sprintf("exists (SELECT sim from virtual_order_cards_partition AS p WHERE %s.sim = p.sim AND type in (%s))", $orgModel->getTable(), implode(',', $conditions['has_type']))); } }); @@ -183,7 +185,7 @@ trait OrderCardConcern switch ($conditions['card_status']) { case 0: - $hasRaw = sprintf("exists (SELECT sim FROM cards WHERE virtual_order_cards_partition.sim = cards.sim AND (cancelled_at IS NULL or cancelled_at < '%s'))", $date); + $hasRaw = sprintf("exists (SELECT sim FROM cards WHERE %s.sim = cards.sim AND (cancelled_at IS NULL or cancelled_at < '%s'))", $orgModel->getTable(), $date); $this->model = $this->model->whereNull('service_start_at') ->whereRaw($hasRaw) @@ -191,7 +193,7 @@ trait OrderCardConcern break; case 1: - $hasRaw = sprintf("exists (SELECT sim FROM cards WHERE virtual_order_cards_partition.sim = cards.sim AND (cancelled_at IS NULL or cancelled_at < '%s'))", $date); + $hasRaw = sprintf("exists (SELECT sim FROM cards WHERE %s.sim = cards.sim AND (cancelled_at IS NULL or cancelled_at < '%s'))", $orgModel->getTable(), $date); $this->model = $this->model->whereNull('service_start_at') ->whereRaw($hasRaw) @@ -199,23 +201,23 @@ trait OrderCardConcern break; case 2: - $havingRaw = sprintf("exists (SELECT sim FROM virtual_order_cards_partition AS p WHERE %s.sim = p.sim GROUP BY sim HAVING MAX(service_end_at) >= '%s')", $this->getTable(), $date); - $hasRaw = sprintf("exists (SELECT sim FROM cards WHERE virtual_order_cards_partition.sim = cards.sim AND (cancelled_at IS NULL or cancelled_at <= '%s'))", $date); + $havingRaw = sprintf("exists (SELECT sim FROM virtual_order_cards_partition AS p WHERE %s.sim = p.sim GROUP BY sim HAVING MAX(service_end_at) >= '%s')", $orgModel->getTable(), $date); + $hasRaw = sprintf("exists (SELECT sim FROM cards WHERE %s.sim = cards.sim AND (cancelled_at IS NULL or cancelled_at <= '%s'))", $orgModel->getTable(), $date); $this->model = $this->model->whereNotNull('service_start_at') ->whereRaw($havingRaw) ->whereRaw($hasRaw); break; case 3: - $havingRaw = sprintf("exists (SELECT sim FROM virtual_order_cards_partition AS p WHERE %s.sim = p.sim GROUP BY sim HAVING MAX(service_end_at) < '%s')", $this->getTable(), $date); - $hasRaw = sprintf("exists (SELECT sim FROM cards WHERE virtual_order_cards_partition.sim = cards.sim AND (cancelled_at IS NULL or cancelled_at <= '%s'))", $date); + $havingRaw = sprintf("exists (SELECT sim FROM virtual_order_cards_partition AS p WHERE %s.sim = p.sim GROUP BY sim HAVING MAX(service_end_at) < '%s')", $orgModel->getTable(), $date); + $hasRaw = sprintf("exists (SELECT sim FROM cards WHERE %s.sim = cards.sim AND (cancelled_at IS NULL or cancelled_at <= '%s'))", $orgModel->getTable(), $date); $this->model = $this->model->whereNotNull('service_start_at') ->whereRaw($havingRaw) ->whereRaw($hasRaw); break; case 4: - $hasRaw = sprintf("exists (SELECT sim FROM cards WHERE virtual_order_cards_partition.sim = cards.sim AND (cancelled_at IS NOT NULL AND cancelled_at >= '%s'))", $date); + $hasRaw = sprintf("exists (SELECT sim FROM cards WHERE %s.sim = cards.sim AND (cancelled_at IS NOT NULL AND cancelled_at >= '%s'))", $orgModel->getTable(), $date); $this->model = $this->model->whereRaw($hasRaw); break;