Mahmoud Alrashidi نشر 4 أبريل 2021 أرسل تقرير مشاركة نشر 4 أبريل 2021 أنا أبحث عن إمكانية الحصول على قائمة بالمستخدمين بما في ذلك الحد الأقصى لسعر المقالة لكل مستخدم. إذا فعلت ذلك على هذا النحو ، فهو يعمل: $users=User::withMax('articles','price')->get(); ومع ذلك ، أريد فقط النظر في المقالات النشطة ، لذلك أفكر في القيام بشيء من هذا القبيل ، لكن هذا فشل $users=User::withMax('articles','price')->where('articles.active',true)->get(); عندما أنظر إلى طلب البحث الفرعي الذي تم إنشاؤه ، يتضح سبب فشله: select `users`.* (select max(`articles`.`price`) from `articles` where `user`.`id` = `article`.`user_id`) as `article_max_price` from `users` where `articles`.`active` = 1 يجب أن تكون عبارة where في الاستعلام الفرعي ، وليس في الاستعلام الرئيسي. كيف يمكنني تغيير الكود الخاص بي بحيث تكون عبارة where في طلب البحث الفرعي؟ 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 سمير عبود نشر 4 أبريل 2021 أرسل تقرير مشاركة نشر 4 أبريل 2021 يُمكنك عمل ذلك بإستخدام الطريقة التالية: $users = User::withCount(['articles as article_max_price' => function ($query) { $query->selectRaw('max(price)')->where('active', true); }])->get(); كما يُمكنك أيضاً تمرير مصفوفة للتابع withMax بحيث تستطيع عمل التالي للحصول على ما تريد: $users = User::withMax(['articles' => function ($query) { $query->where('active', true); }], 'price')->get(); 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
Mahmoud Alrashidi
أنا أبحث عن إمكانية الحصول على قائمة بالمستخدمين بما في ذلك الحد الأقصى لسعر المقالة لكل مستخدم. إذا فعلت ذلك على هذا النحو ، فهو يعمل:
ومع ذلك ، أريد فقط النظر في المقالات النشطة ، لذلك أفكر في القيام بشيء من هذا القبيل ، لكن هذا فشل
عندما أنظر إلى طلب البحث الفرعي الذي تم إنشاؤه ، يتضح سبب فشله:
يجب أن تكون عبارة where في الاستعلام الفرعي ، وليس في الاستعلام الرئيسي. كيف يمكنني تغيير الكود الخاص بي بحيث تكون عبارة where في طلب البحث الفرعي؟
رابط هذا التعليق
شارك على الشبكات الإجتماعية
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.