عند العمل مع قواعد البيانات، من الشائع مواجهة مواقف قد تكون فيها بعض الحقول فارغة أو فارغة. أحد التحديات التي تنشأ غالبًا هو كيفية فرز السجلات بحيث تظهر الصفوف ذات الحقول الفارغة في أسفل مجموعة النتائج، بينما يتم ترتيب تلك التي تحتوي على قيم غير فارغة بطريقة ذات معنى (على سبيل المثال، ترتيب تنازلي). في هذه التدوينة، سأوضح لك كيفية تحقيق ذلك في Laravel باستخدام مثال عملي.
لنفترض أن لديك جدولًا بالمشاركين في أحد الأنشطة، وقد يكون لدى كل مشارك أو لا يكون لديه طابع زمني حضر_في، والذي يسجل وقت حضور المشارك للنشاط. تريد إدراج جميع المشاركين وفرزهم بطريقة:
افتراضيًا، تقوم طريقة Laravel الأحدث () بفرز السجلات حسب عمود معين بترتيب تنازلي. ومع ذلك، فإنه لا يعالج الحالة التي تحتوي فيها بعض السجلات على قيم فارغة أو فارغة. إذا كنت تستخدم ببساطة:
return $this ->participants() ->with('user') ->latest('attended_at') ->get();
سيتم ترتيب المشاركين بطابع زمني، لكنه لن ينقل القيم الخالية إلى الأسفل.
يمكننا تحقيق الفرز المطلوب باستخدام طريقة orderByRaw(). يتيح لنا ذلك كتابة منطق فرز مخصص باستخدام تعبيرات SQL الأولية. في هذه الحالة، سنرتب حسب ما إذا كان Attend_at هو NULL، ثم نرتب حسب Attend_at بترتيب تنازلي للقيم غير NULL.
إليك كيفية كتابة هذا الاستعلام في Laravel:
return $this ->participants() ->with('user') ->orderByRaw('attended_at IS NULL, attended_at DESC') ->get() ->map(function (ActivityParticipant $participant) { return [ 'metric_number' => data_get($participant, 'user.student_id'), 'name' => data_get($participant, 'user.name'), 'status' => data_get($participant, 'status'), 'attended_at' => data_get($participant, 'attended_at', '-'), ]; })->toArray();
يتم بعد ذلك استخدام وظيفة الخريطة () لتنسيق الإخراج في البنية المطلوبة، بما في ذلك الحقول مثل معرف الطالب والاسم والحالة، وتحويل الطابع الزمني للحاضر إلى تنسيق يمكن قراءته بواسطة الإنسان أو "-" إذا كان كذلك فارغ.
تعد معالجة الفرز باستخدام قيم فارغة أو فارغة في Laravel مهمة شائعة عند التعامل مع البيانات التي قد لا تكون كاملة دائمًا. باستخدام طريقة orderByRaw() مع تعبير SQL مثل Attend_at IS NULL، Attend_at DESC، يمكنك بسهولة التأكد من ظهور الصفوف ذات القيم NULL في الأسفل مع الاستمرار في فرز بقية البيانات بطريقة ذات معنى.
تعتبر هذه الطريقة مفيدة بشكل خاص في السيناريوهات التي تتعامل فيها مع الحضور، كما هو موضح في هذا المثال، ولكن يمكن تطبيقها على العديد من المواقف الأخرى التي قد تكون فيها بعض حقول البيانات مفقودة. باستخدام هذا الأسلوب، يمكنك تزويد المستخدمين بعرض أكثر وضوحًا وسهولة للسجلات في تطبيقك.
تعليمات سعيدة!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3