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

السؤال

نشر

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

$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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...