JBolouri
4 سال پیش توسط JBolouri مطرح شد
2 پاسخ

نمایش داده های جدول یوزر ها به ترتیب بیشترین چگالی اسم

سلام دوستان..

میخوام داده هایی که توی جدول users دارم رو بر اساس نام از بیشترین به کمترین تعداد استفاده مرتب کنم و نمایش بدم..

مثلا توی جدولم ده نفر اسمشون mohammad هست و دوازده نفر ali و سه نفر هم moslem..
ولی طبیعتا رکورداشون به ترتیب نیست..

میخوام به این صورت به ترتیب توی فرمم نمایش بدم..

ali (12)
mohammad (10)
moslem (3)

ممنون میشم راهنماییم کنید


ثبت پرسش جدید
Max Base
تخصص : علاقه مند به یادگیری
@max 4 سال پیش آپدیت شد
1

سلام وقت بخیر؛
راه های مختلفی هست که یکی از اونها این هست که ابتدا اسامی کل اسم ها رو groupBy کنید تا هیچ اسم تکراری دریافت نکنید.

User::all()->unique('name')

$users = DB::table('user')
            ->select('name')
            ->groupBy('name')
            ->get();

در مرحله بعد count کنید که چند حساب با هر یک اسم دارید. این هم یک دستور ساده count هست. می توانید لیست بالا را foreach کنید و بعد به ازای هر یک count کنید که چند حساب با ان اسم دارید.
طبیعتا این عدد از یک نباید کمتر باشد!
البته بنظرم بتوانید کل این پردازش را با SQL انجام دهید.

پ.ن: پیشنهاد می کنم در مورد دو موضوع distinct و count مطالعه و تحقیق کنید.

$query->select(DB::raw('DISTINCT name, COUNT(*) AS name'))
      ->groupBy('name')
      ->orderBy('count', 'desc');

بهتر است بر اساس ساختار جدول خود تصمیم بگیرید که چه روشی عملکرد performance بهتری رو دارد.
موفق باشید


JBolouri
@javadbolouri72 4 سال پیش مطرح شد
0

@max
ممنون از راهنماییتون


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام