hasOne(OrderPackageCommodities::class,'id','order_package_commodity_id'); } public function owner(){ return $this->hasOne(Owner::class,'id','owner_id'); } public function logistic(){ return $this->hasOne(Logistic::class,'id','logistic_id'); } public function uploadFile() { return $this->hasOne(UploadFile::class,'table_id','order_client_code')->where('table_name','order_trackings'); } public function getOwnerNameAttribute(){ return $this->owner['name'] ?? ''; } public function getSkuAttribute(){ return ['sku' => $this->commodities['commodity']['sku'] ?? '', 'skuName' => $this->commodities['commodity']['name'] ?? '', 'skuAmount' => $this->commodities['amount'] ?? '']; } public function getPackageWeightAttribute(){ return $this->commodities->package['weight'] ?? ''; } public function getPackageBulkAttribute(){ return $this->commodities->package['bulk'] ?? ''; } public function getOrderCityAttribute(){ return $this->commodities->package->order['city'] ?? ''; } public function getPackageLogisticNumberAttribute(){ return $this->commodities->package['logistic_number'] ?? ''; } public function getPackageLogisticAttribute(){ return $this->commodities->package->order->logistic['name'] ?? ''; } public function getOrderClientNumberAttribute(){ return $this->commodities->package->order['client_code'] ?? ''; } public function scopeFilter($query, $filters) { return $filters->apply($query); } public function scopeDefaultQuery($query): Builder { return $query->orderByDesc('order_trackings.pick_up_at') ->orderBy('order_trackings.order_client_code'); } public function scopeDefaultWith($query) { return $query->with(['commodities'=>function($query){ $query->with(['commodity.barcodes','serialNumbers','package.order']); },'owner','logistic','uploadFile']); } }