سلام دوستان خسته نباشید
ببخشید یه سایت ساختم که داخلش میشه موزیک رو گوش کرد و لایکش کرد
حالا بر اساس لایک میخوام موزیک ها رو از همدیگه جدا کنم و داخل دیتابیس بخش هاش اینجوریه :
نام موزیک - نام خواننده - فایل موزیک«برای آدرس دهی» - فایل کاور موزیک - لایک ها
خب حالا میخوام بر اساس لایک ده تا موزیک برتر رو جدا کنم میخواستم بدونم چجوریه ؟
مثلا ده تا موزیک برتر که بیشترین تعداد لایک رو دارن به عنوان موزیک برتر نمایش داده بشن.
میشه راهنمایی کنید چجوریه؟
ممنون .
@hesammousavi
سلام یه تیبل دیگه تو دیتابیست میسازی و اسمش رو مثلا میزاری لایک ها که توش ایدی اهنگ و یوزر هست که رابطه چند به چند لاراول هست
Song Model
public function likes()
{
return $this->belongsToMany(User::class, 'likes');
}
User Model
public function liked()
{
return $this->belongsToMany(Song::class, 'likes');
}
$mostLikedSongs = Song::withCount('likes')->orderByDesc('likes_count')->take(10)->get();@411proplayer دوست عزیز من لاراول یاد ندارم آخه
شاید پاسخ شما همینجا باشد
@soheil.maleki با چی کار میکنید ؟ کوئری sql میخواید ؟
@411proplayer
آره دیگه من نمیدونم چطور میشه این دیتا ها رو فیلتر کرد تا بشه نمایششون داد
@gomnam با پی اچ پی کار میکنم
@gomnam خيلی ممنونم
@gomnam عزیز، خود mysql دستوری داره به نام limit و اگه اخر هر کوئری قرار بدی، برات 10 تا رو برمیگردونه، این کاری که شما کردی اگه 2000 تا موسیقی باشه، هر 2000 تا واکشی میشه و بعدش توی php سورت میکنه که اصلا عاقلانه نیست و باعث میشه هم سایت کند بشه و هم سرور down
$sql = "SELECT * FROM `*****` ORDER BY `like` DESC limit 10";
در نهایت پیشنهاد میکنم این مطلب رو بخونید:
https://www.mysqltutorial.org/mysql-limit.aspx
@navids واقعا اطلاع نداشتم .
متشکر