TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 611 subscribers
Post #309 145
فصل چهار - مدل‌ها و Eloquent ORM

بخش دوم - مدل ها - قسمت هفتم (متدهای مرتب سازی و محدود سازی)


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
.
  • 👍 1
  • 🔥 1
More from @amirhdeveloper
  1. Sep 30, 2026پکیج LaraGram Sentinel منتشر شد؛ یک پنل مانیتورینگ که هیچ چیزی از زیر دستش در نمی‌ره! تمام…
  2. Sep 23, 2026از امروز با کاهش شدید حاکرها مواجه میشیم
  3. Sep 19, 2026🔴 سوال سوم دو Region دارید: US-East و EU-West. کاربران در هر دو Region هستند. سیستم باید…
  4. Sep 19, 2026🟠 سوال دوم فرض کنید Service A به Service B درخواست می‌زند. B به‌دلیل overload، latency با…
  5. Sep 19, 2026🟢 سوال اول فرض کنید یک سرویس backend داریم که به PostgreSQL وصل می‌شود. تعداد requestها ن…
  6. Sep 19, 2026خیلی وقته پست‌های کانال فقط درمورد LaraGram بوده، وقتشه یکم جالب‌ترش کنیم اگر ممبرها هنوز…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →