belongsTo(Customer::class); } public function address() { return $this->belongsTo(CustomerAddress::class, 'customer_address_id'); } public function delivery_address() { return $this->belongsTo(CustomerAddress::class, 'customer_delivery_id'); } public function delivery() { return $this->belongsTo(Delivery::class); } public function detail() { return $this->hasMany(OrderDetail::class); } public function invoice() { return $this->hasOne(Invoice::class); } public function sale_channel() { return $this->belongsTo(SaleChannel::class); } public function scopeByUUID($query, $uuid) { return $query->where('uuid', $uuid); } public function scopeByCustomer($query, $customerId) { return $query->where('customer_id', $customerId); } public function scopeByDelivery($query, $deliveryId) { return $query->where('delivery_id', $deliveryId); } public function scopePreparation($query) { return $query->byStatus(1); } public function scopeSended($query) { return $query->byStatus(2); } public function scopeReceived($query) { return $query->byStatus(3); } public function scopeByStatus($query, $status) { return $query->where('status', $status); } public function scopeByPaymentType($query, $paymentType) { return $query->where('payment_type', $paymentType); } public function scopeByPeriod($query, $start, $end, $field = 'created_at') { return $query->whereBetween($field, [$start, $end]); } }