لدي جدولين products و variants. العلاقة بينهم one to many . لا يحتوي جدول "products " على عمود price ، حيث يقع هذا العمود ضمن جدول variants. يتم تمثيل سعر المنتج بأقل سعر في variants في لوحة التحكم. في لوحة القيادة ، أحتاج إلى عمل فنكشن تقوم بفرز سعر المنتج من الأدنى إلى الأعلى وترقيمه. نظرا لطبيعة Eloquent builder وتصميم قاعدة بياناتي ، فالأمر ليس بهذه البساطة. لأنني يجب أن أستخدم model methods للوصول إلى أدنى سعر كالتالي:
protected function price(): Attribute
{
return new Attribute(get: function(){
return $this->variants()->get()->min('price');
});
}
لقد جربت عدة أشياء مثل استخدام sortBy ولكن هذا فقط ل collection لذا لا يمكنني استخدام paginate ، حتى لو استطعت ، فسيكون ذلك ضغط كبير على الذاكرة إذا كان الاستعلام كبير جدا
كيف يمكنني فرز البيانات حسب السعر قبل ترقيمها؟
السؤال
محمد لارافيل
لدي جدولين products و variants. العلاقة بينهم one to many . لا يحتوي جدول "products " على عمود price ، حيث يقع هذا العمود ضمن جدول variants. يتم تمثيل سعر المنتج بأقل سعر في variants في لوحة التحكم. في لوحة القيادة ، أحتاج إلى عمل فنكشن تقوم بفرز سعر المنتج من الأدنى إلى الأعلى وترقيمه. نظرا لطبيعة Eloquent builder وتصميم قاعدة بياناتي ، فالأمر ليس بهذه البساطة. لأنني يجب أن أستخدم model methods للوصول إلى أدنى سعر كالتالي:
protected function price(): Attribute { return new Attribute(get: function(){ return $this->variants()->get()->min('price'); }); }
لقد جربت عدة أشياء مثل استخدام sortBy ولكن هذا فقط ل collection لذا لا يمكنني استخدام paginate ، حتى لو استطعت ، فسيكون ذلك ضغط كبير على الذاكرة إذا كان الاستعلام كبير جدا
كيف يمكنني فرز البيانات حسب السعر قبل ترقيمها؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.