TGViewer
| AmirHossein | | AmirHossein | @amirhdeveloper · 611 subscribers
Post #308 176
فصل چهار - مدل‌ها و 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 #لاراول #فصل_۴
💠 @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 →