exists() vs count() - розумна перевірка
Перевірка чи користувач має пости? Використання $user->posts->count() > 0 завантажує всі пости.
exists() зупиняється на першому збігу. Набагато швидше.
Різниця:
count()підраховує всі записиexists()зупиняється коли знаходить перший
Вплив на продуктивність:
З 10,000 постів - count() завантажує всі, exists() знаходить один і зупиняється.
Порада: Використання exists() для булевих перевірок, count() тільки коли потрібне фактичне число.
// ПОГАНО: Завантажує всі пости, рахує їх
if ($user->posts->count() > 0) {
echo "Користувач має пости";
}
// ДОБРЕ: Зупиняється на першому пості
if ($user->posts()->exists()) {
echo "Користувач має пости";
}
// Перевірка чи зв'язок порожній
if ($user->posts()->doesntExist()) {
echo "Пости не знайдено";
}
// Рівень запиту
if (Post::where('published', true)->exists()) {
// Принаймні один опублікований пост існує
}
// Коли справді потрібна кількість
$postCount = $user->posts()->count();
echo "Користувач має {$postCount} постів";
// Перевірка порожнього на завантаженому зв'язку
if ($user->posts->isEmpty()) {
// Вже завантажено, без додаткових запитів
}