بخش دوم - مدل ها - قسمت هفتم (متدهای مرتب سازی و محدود سازی)
1- متد orderBy
برای مرتبسازی نتایج بر اساس یک ستون به صورت صعودی یا نزولی استفاده میشود. به صورت پیشفرض، مرتبسازی صعودی (از کوچک به بزرگ) انجام میشود.
$users = User::orderBy('name', 'asc')->get();2- متد orderByDesc
برای مرتبسازی نتایج بر اساس یک ستون به صورت نزولی استفاده میشود.
$users = User::orderByDesc('created_at')->get();3- متد orderByRaw
برای نوشتن کوئریهای خام SQL برای مرتبسازی استفاده میشود.
$users = User::orderByRaw('LENGTH(name) DESC')->get();4- متد latest
برای مرتبسازی بر اساس جدیدترین رکوردها (بر اساس فیلد created_at) استفاده میشود. به صورت پیشفرض، مرتبسازی نزولی است.
$posts = Post::latest()->get();
5- متد oldest
برای مرتبسازی بر اساس قدیمیترین رکوردها (بر اساس فیلد created_at) استفاده میشود.
$posts = Post::oldest()->get();
6- متد inRandomOrder
برای مرتبسازی نتایج به صورت تصادفی استفاده میشود.
$users = User::inRandomOrder()->get();
این کد تمام کاربران را به صورت تصادفی مرتب و بازیابی میکند.
7- متد reorder
برای پاک کردن هرگونه مرتبسازی قبلی و اعمال یک مرتبسازی جدید استفاده میشود.
$users = User::orderBy('name')->reorder('email', 'desc')->get();در ابتدا، کاربران بر اساس نام مرتب میشوند، اما با استفاده از reorder مرتبسازی قبلی پاک میشود و کاربران بر اساس ایمیل به صورت نزولی مرتب میشوند.
8- متد count
برای شمارش تعداد رکوردها در یک مجموعه استفاده میشود.
$userCount = User::count();
9- متد max
برای یافتن بیشترین مقدار از یک ستون خاص استفاده میشود.
$maxAge = User::max('age');10- متد min
برای یافتن کمترین مقدار از یک ستون خاص استفاده میشود.
$minAge = User::min('age');11- متد avg
برای محاسبه میانگین مقدار یک ستون خاص استفاده میشود.
$averageAge = User::avg('age');12- متد sum
برای محاسبه مجموع مقادیر یک ستون خاص استفاده میشود.
$totalSalary = User::sum('salary');13- متد limit
برای محدود کردن تعداد رکوردهایی که از دیتابیس بازیابی میشوند، استفاده میشود.
$users = User::limit(10)->get()
14- متد having
برای فیلتر کردن نتایج بر اساس شرطی که بر روی ستونهای جمعآوری شده (مثل COUNT, SUM, AVG) اعمال میشود، استفاده میشود.
$users = User::select('status', DB::raw('COUNT(*) as user_count'))
->groupBy('status')
->having('user_count', '>', 5)
->get();این کد تمام وضعیتهای کاربرانی که بیش از ۵ کاربر دارند را بازیابی میکند. (سایر متد های موجود در مثال در قسمت های بعدی بررسی می شوند.)
15- متد havingBetween
برای فیلتر کردن نتایج با استفاده از محدودهای بین دو مقدار روی ستونهای جمعآوری شده استفاده میشود.
$users = User::select('status', DB::raw('COUNT(*) as user_count'))
->groupBy('status')
->havingBetween('user_count', [5, 10])
->get();این کد تمام وضعیتهای کاربرانی را که تعدادشان بین ۵ تا ۱۰ نفر است، بازیابی میکند.
16- متد take
برای محدود کردن تعداد رکوردهای بازیابی شده استفاده میشود. take مشابه limit است.
$users = User::take(5)->get();
17- متد skip
برای نادیده گرفتن تعدادی رکورد اول استفاده میشود.
$users = User::skip(10)->take(5)->get();
این کد بعد از نادیده گرفتن ۱۰ رکورد اول، ۵ کاربر بعدی را بازیابی میکند.
18- متد offset
برای نادیده گرفتن تعداد مشخصی از رکوردهای اول استفاده میشود و در ترکیب با limit معمولاً استفاده میشود.
$users = User::offset(10)->limit(5)->get();
این کد بعد از نادیده گرفتن ۱۰ رکورد اول، ۵ کاربر بعدی را بازیابی میکند.
19 متد when
برای اعمال شرط به کوئری در صورت وجود شرایط خاصی استفاده میشود.
$users = User::when(request('status'), function ($query, $status) {
return $query->where('status', $status);
})->get();این کد بررسی میکند که آیا درخواستی برای status وجود دارد؛ اگر وجود داشت، کاربران با همان وضعیت را بازیابی میکند.
20- متد exists
برای بررسی این است که آیا رکوردهایی در جدول وجود دارند یا خیر. این متد یک مقدار (true یا false) برمیگرداند.
$usersExist = User::where('name', 'John')->exists();21- متد doesntExist
مشابه exists است، اما بررسی میکند که آیا رکوردهایی وجود ندارند. این متد نیز یک مقدار (true یا false) برمیگرداند.
$usersNotExist = User::where('name', 'John')->doesntExist();▫️ 🟠
🔎 #laravel #لاراول #فصل_۴
💠 @AmirhDeveloper
.