بخش دوم - مدل ها - قسمت ششم (متدهای شرطی - 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
.