اذهب إلى المحتوى
  • 0

Laravel withMax بإضافة شرط

Mahmoud Alrashidi

السؤال

أنا أبحث عن إمكانية الحصول على قائمة بالمستخدمين بما في ذلك الحد الأقصى لسعر المقالة لكل مستخدم. إذا فعلت ذلك على هذا النحو ، فهو يعمل:

$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 في طلب البحث الفرعي؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يُمكنك عمل ذلك بإستخدام الطريقة التالية:

$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();
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...