Herkese merhaba, bir projemde siparişleri yıllara göre karşılaştırmam gerekiyor. Bunun için sorguyla verileri gruplayarak çekmek istedim.
$this->data['model'] = $this->data['model']->with('product')->get()->groupBy(['service_id',function($q){
return Carbon::parse($q->created_at)->format('Y');
}]);
Bu sorgu ile verileri ürünlere ve yıla göre gruplandırıp istediğim veriyi (hangi ürün hangi yıl ne kadar satılmış) elde edebiliyorum. dd($this->data['model']) şu şekilde bir çıktı alıyorum:
Illuminate\Support\Collection {#2049 ▼
#items: array:4 [▼
1 => Illuminate\Database\Eloquent\Collection {#2020 ▶}
2 => Illuminate\Database\Eloquent\Collection {#2018 ▼
#items: array:2 [▼
2022 => Illuminate\Database\Eloquent\Collection {#2024 ▼
#items: array:1 [▼
0 => App\Models\OrderDetail {#2033 ▼
#table: "order_detail"
#primaryKey: "detail_id"
#fillable: array:13 [▶]
#dates: array:2 [▶]
#connection: "mysql"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
+preventsLazyLoading: false
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#escapeWhenCastingToString: false
#attributes: array:17 [▶]
#original: array:17 [▶]
#changes: []
#casts: []
#classCastCache: []
#attributeCastCache: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: array:1 [▶]
#touches: []
+timestamps: true
#hidden: []
#visible: []
#guarded: array:1 [▶]
}
]
#escapeWhenCastingToString: false
}
2021 => Illuminate\Database\Eloquent\Collection {#2022 ▶}
]
#escapeWhenCastingToString: false
}
3 => Illuminate\Database\Eloquent\Collection {#2023 ▶}
4 => Illuminate\Database\Eloquent\Collection {#2047 ▶}
]
#escapeWhenCastingToString: false
}
Sorunuma gelecek olursak; bu verileri tabloya aktarmak için paginate işlemi yaptığımda method paginate does not exist hatası alıyorum. Bu hatadan kurtulmak için sorgumdaki get() i kaldırmam gerekiyor galiba. Fakat onu kaldırdığım zaman da stripos() expects parameter 1 to be string, object given hatası alıyorum ve bir türlü bu hatalardan kurtulamadım. Nasıl bi yol izlemem gerekli ?