मैं इस तकनीक का उपयोग इंस्पेक्टर डैशबोर्ड में दिनांक के अनुसार बग फिक्स सरणी को समूहीकृत करने के लिए करता हूं, और मैंने सोचा कि यह दूसरों के लिए एक अच्छा कोड स्निपेट विचार हो सकता है। मैंने लारवेल ब्लेड टेम्प्लेट के लिए एक कार्यान्वयन और फ़िल्टरिंग का समर्थन करने वाला एक अधिक विस्तृत कार्यान्वयन भी लिखा।
मैंने इस कोड को लागू करने का निर्णय लिया क्योंकि यह वस्तुओं की सूची को उनके इतिहास के आधार पर स्क्रॉल करना इतना आसान बनाता है।
यह कार्यान्वयन array_reduce फ़ंक्शन का उपयोग करता है। यह उत्तरोत्तर एक नई सारणी बनाने की अनुमति देता है जहां प्रत्येक तिथि एक कुंजी बन जाती है, जिसमें संबंधित तत्व उसका मान होता है।
$data = [ ['date' => '2023-06-01', 'value' => 10], ['date' => '2023-06-02', 'value' => 20], ['date' => '2023-06-01', 'value' => 30], ['date' => '2023-06-03', 'value' => 40], ['date' => '2023-06-02', 'value' => 50], ]; $groupedData = array_reduce($data, function ($result, $item) { $date = new DateTime($item['date']); $formattedDate = $date->format('Y-m-d'); if (!isset($result[$formattedDate])) { $result[$formattedDate] = []; } $result[$formattedDate][] = $item; return $result; }, []); //डेटटाइम ऑब्जेक्ट और प्रारूप विधि के लिए धन्यवाद, आप केवल प्रारूप स्ट्रिंग को बदलकर, महीने या वर्ष के अनुसार समूहीकरण तर्क को अनुकूलित कर सकते हैं: महीने के लिए 'Y-m', या वर्ष के लिए 'Y'।
फ़िल्टर करना और समूह बनाना
आप दिनांक फ़ील्ड के आधार पर तत्वों को समूहीकृत करने से पहले उन्हें फ़िल्टर करने के लिए एक फ़िल्टर फ़ंक्शन भी पेश कर सकते हैं।
$groupedData = array_reduce(array_filter($data, function ($item) use ($filter) { // Filter condition: keep elements with value greater than 20 return $item['value'] > $filter; }), function ($result, $item) { $date = new DateTime($item['date']); $formattedDate = $date->format('Y-m-d'); if (!isset($result[$formattedDate])) { $result[$formattedDate] = []; } $result[$formattedDate][] = $item; return $result; }, []);array_filter() के कॉलबैक फ़ंक्शन के अंदर, हम फ़िल्टर स्थिति निर्दिष्ट करते हैं। इस उदाहरण में, हम केवल उन तत्वों को रखते हैं जहां 'मान' फ़ील्ड $filter से अधिक है। आप अपने विशिष्ट उपयोग के मामले के आधार पर इस शर्त को संशोधित कर सकते हैं।
लारवेल ब्लेड के साथ यूआई में परिणाम दिखाए जा रहे हैं
जाहिर तौर पर आप प्रेरणा ले सकते हैं और अपनी विशिष्ट तकनीक (जैसे सिम्फनी ट्विग, या इसी तरह) में उसी रणनीति का उपयोग कर सकते हैं।
डेटा हेरफेर कथनों को दृश्य से अलग रखने के लिए मैं नियंत्रक स्तर पर फ़िल्टरिंग और समूहीकरण प्रक्रिया रखता हूं, और मैं टेम्पलेट पक्ष पर केवल डेटा संरचना पुनरावृत्ति लागू करता हूं।
यहाँ नियंत्रक है:
namespace App\Http; use Illuminate\Http\Request; class DashboardController extends Controller { /** * The dashboard. * * @param ImpersonatesUsers $impersonator * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function index(Request $request) { $data = $this->getData(); $data = array_reduce(array_filter($data, function ($item) use ($filter) { // Filter condition: keep elements with value greater than 20 return $item['value'] > $filter; }), function ($result, $item) { $date = new DateTime($item['date']); $formattedDate = $date->format('Y-m-d'); if (!isset($result[$formattedDate])) { $result[$formattedDate] = []; } $result[$formattedDate][] = $item; return $result; }, []); return view('dashboard', compact('data')); } }और यहां ब्लेड दृश्य है:
लारवेल कलेक्शन क्लास द्वारा प्रदान की गई अंतर्निहित उपयोगिताओं के लिए धन्यवाद, यह वास्तव में सीधा है:
$groupedData = collect($data)->groupBy(function ($item) { return Carbon::parse($item->date)->format('Y-m-d'); });
आप मुझे लिंक्डइन या एक्स पर फ़ॉलो कर सकते हैं। मैं अपना SaaS व्यवसाय बनाने के बारे में पोस्ट करता हूं।
इंस्पेक्टर एक कोड निष्पादन निगरानी उपकरण है जो विशेष रूप से सॉफ्टवेयर डेवलपर्स के लिए डिज़ाइन किया गया है। आपको सर्वर स्तर पर कुछ भी इंस्टॉल करने की आवश्यकता नहीं है, बस कंपोजर पैकेज इंस्टॉल करें और आप जाने के लिए तैयार हैं।
इंस्पेक्टर बेहद आसान और PHP फ्रेंडली है। आप हमारे लारवेल या सिम्फनी पैकेज को आज़मा सकते हैं।
यदि आप HTTP मॉनिटरिंग, डेटाबेस क्वेरी अंतर्दृष्टि और अपने पसंदीदा मैसेजिंग वातावरण में अलर्ट और सूचनाओं को अग्रेषित करने की क्षमता की तलाश में हैं, तो इंस्पेक्टर को निःशुल्क आज़माएं। अपना खाता पंजीकृत करें।
या वेबसाइट पर अधिक जानें: https://inspector.dev
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3