TGViewer
| کانال توسعه‌دهندگان لاراول | | کانال توسعه‌دهندگان لاراول | @developixlaravel · 1.54K subscribers
Post #95 594
فصل چهار - مدل‌ها و Eloquent ORM

بخش دوم - مدل ها - قسمت ششم (متدهای شرطی - 3)


1- متد whereExists
برای جستجوی رکوردهایی که وجود یک subquery خاص را تأیید می‌کند، استفاده می‌شود.
$users = User::whereExists(function ($query) {
$query->from('orders')
->whereColumn('orders.user_id', 'users.id');
})->get();

این کد تمام کاربرانی را که یک order در جدول orders با user_id مرتبط به آن‌ها وجود دارد، بازیابی می‌کند.

2- متد whereNotExists
مشابه whereExists است، اما برای جستجوی رکوردهایی استفاده می‌شود که subquery آن‌ها نتیجه‌ای ندارد.
$users = User::whereNotExists(function ($query) {
$query->from('orders')
->whereColumn('orders.user_id', 'users.id');
})->get();


نکته: متدهای پیش رو برای کار با روابط است که در قسمت های بعدی مفصل به آنها پرداخته می شود.

3- متد doesntHave
برای جستجوی رکوردهایی استفاده می‌شود که هیچ رابطه‌ای با یک رابطه مشخص ندارند.
$users = User::doesntHave('posts')->get();

این کد تمام کاربرانی را که هیچ پستی (posts) ندارند بازیابی می‌کند.

4- متد whereDoesntHave
مشابه doesntHave است، اما به شما اجازه می‌دهد که شرط‌های بیشتری را به کوئری اضافه کنید.
$users = User::whereDoesntHave('posts', function ($query) {
$query->where('title', 'like', '%Laravel%');
})->get();

این کد تمام کاربرانی را که هیچ پستی با عنوان شامل کلمه 'Laravel' ندارند، بازیابی می‌کند.

5- متد orWhereDoesntHave
مشابه whereDoesntHave است، اما برای افزودن شرط OR در جستجوی رکوردهایی که هیچ رابطه‌ای با یک رابطه مشخص ندارند، استفاده می‌شود.
$users = User::where('status', 'active')->orWhereDoesntHave('posts')->get();


6- متد whereHas
برای جستجوی رکوردهایی که رابطه‌ای با یک رابطه مشخص دارند و همچنین شرط‌های اضافی روی آن رابطه اعمال شده است، استفاده می‌شود.
$users = User::whereHas('posts', function ($query) {
$query->where('title', 'like', '%Laravel%');
})->get();

این کد تمام کاربرانی را که حداقل یک پستی با عنوان شامل کلمه 'Laravel' دارند، بازیابی می‌کند.

7- متد orWhereHas
مشابه whereHas است، اما برای افزودن شرط OR به جستجوی رکوردهایی که رابطه‌ای با یک رابطه مشخص دارند، استفاده می‌شود.
$users = User::where('status', 'inactive')->orWhereHas('posts', function ($query) {
$query->where('title', 'like', '%Laravel%');
})->get();


8- متد whereRelation
برای اعمال شرطی روی یک رابطه خاص استفاده می‌شود.
$users = User::whereRelation('posts', 'title', 'like', '%Laravel%')->get();

این کد تمام کاربرانی را که حداقل یک پستی با عنوان شامل کلمه 'Laravel' دارند، بازیابی می‌کند.

9- متد orWhereRelation
مشابه whereRelation است، اما برای افزودن شرط OR استفاده می‌شود.
$users = User::where('status', 'inactive')->orWhereRelation('posts', 'title', 'like', '%Laravel%')->get();


10- متد whereMorphRelation
برای اعمال شرطی روی یک رابطه چندشکلی (morph) خاص استفاده می‌شود.
$comments = Comment::whereMorphRelation('commentable', 'posts', 'title', 'like', '%Laravel%')->get();

این کد تمام نظراتی را که مربوط به پست‌هایی با عنوان شامل کلمه 'Laravel' هستند، بازیابی می‌کند.

11- متد orWhereMorphRelation
مشابه whereMorphRelation است، اما برای افزودن شرط OR استفاده می‌شود.
$comments = Comment::where('status', 'pending')->orWhereMorphRelation('commentable', 'posts', 'title', 'like', '%Laravel%')->get();


12- متد whereHasMorph
برای جستجوی رکوردهایی که رابطه‌ای چندشکلی (morph) با یک یا چند نوع مشخص دارند و شرایط اضافی بر آن‌ها اعمال شده است، استفاده می‌شود.
$comments = Comment::whereHasMorph('commentable', ['posts', 'videos'], function ($query) {
$query->where('title', 'like', '%Laravel%');
})->get();

این کد تمام نظراتی را که مربوط به پست‌ها یا ویدئوهایی با عنوان شامل کلمه 'Laravel' هستند، بازیابی می‌کند.

13- متد whereDoesntHaveMorph
برای جستجوی رکوردهایی که هیچ رابطه‌ای چندشکلی (morph) با یک یا چند نوع مشخص ندارند، استفاده می‌شود.
$comments = Comment::whereDoesntHaveMorph('commentable', ['posts', 'videos'])->get();

این کد تمام نظراتی را که مربوط به هیچ پست یا ویدئویی نیستند، بازیابی می‌کند.

14- متد whereBelongsTo
برای جستجوی رکوردهایی که به رکورد دیگری تعلق دارند، استفاده می‌شود.
$posts = Post::whereBelongsTo($user)->get();

این کد تمام پست‌هایی را که به کاربر مشخص شده تعلق دارند، بازیابی می‌کند.

🔖 #Laravel, #PHP, #لاراول, #فصل_۴

👤 AmirHossein

💎 Channel: @DevelopixLaravel
  • ❤ 4
  • 👍 4
  • 🔥 1
More from @developixlaravel
  1. Oct 1, 2026روابط پایگاه داده چند ریختی یا Eloquent Polymorphic در لاراول - قسمت اول در لاراول، روابط…
  2. Sep 30, 2026مدیریت همزمانی و قفل‌گذاری روی پردازش‌ها در لاراول (Laravel Atomic Locks) در بخش چهارم از…
  3. Sep 26, 2026🔥 پکیج: ورود با حساب‌های دیگر؛ Socialite برای اضافه‌کردن ورود با حساب‌های دیگر به پروژه ل…
  4. Sep 25, 2026🔒 فقط داده‌های تأییدشده را ذخیره کن وقتی یک فرم ویرایش پروفایل داری، ممکن است کلاینت علاو…
  5. Sep 20, 2026حفاظت از پردازش ها با Laravel Rate Limiter بخش سوم - پیکربندی در قسمت سوم از مجموعه آموزش…
  6. Sep 16, 2026🚀 ‏LaraGram Brain منتشر شد! از این به بعد برای ساخت ربات‌های تلگرام با فریم‌ورک LaraG…
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 →