Метод exists
Метод exists применяется к запросу Eloquent или Query Builder и проверяет, существуют ли записи, удовлетворяющие условиям запроса. Метод возвращает логическое значение true, если хотя бы одна запись найдена, и false в противном случае. Это более эффективная альтернатива использованию count для проверки существования записей, так как вместо полной загрузки данных выполняется оптимизированный запрос.
Метод exists может вызываться как на экземпляре построителя запросов, так и на модели Eloquent. Он особенно полезен в условных конструкциях, например, для проверки наличия связанных данных перед выполнением определённых операций.
Синтаксис
<?php
$res = Model::where('column', 'value')->exists();
?>
Пример
Проверим, существует ли в таблице articles статья со статусом 'published':
<?php
use App\Models\Article;
$res = Article::where('status', 'published')->exists();
if ($res) {
echo "Published articles exist";
} else {
echo "No published articles";
}
?>
Результат выполнения кода:
"Published articles exist"
Пример
Проверим существование записи с определённым идентификатором:
<?php
use App\Models\Article;
$res = Article::where('id', 5)->exists();
if ($res) {
echo "Article with id 5 exists";
} else {
echo "Article with id 5 not found";
}
?>
Результат выполнения кода:
"Article with id 5 exists"
Пример
Использование метода exists в комбинации с другими методами фильтрации для проверки наличия записей, созданных в определённый период:
<?php
use App\Models\Article;
$res = Article::where('status', 'published')
->whereDate('created_at', '2026-01-01')
->exists();
if ($res) {
echo "Articles published on Jan 1, 2026 exist";
} else {
echo "No articles published on Jan 1, 2026";
}
?>
Результат выполнения кода:
"No articles published on Jan 1, 2026"
Пример
Проверка существования записей при помощи Query Builder:
<?php
use Illuminate\Support\Facades\DB;
$res = DB::table('articles')
->where('status', 'draft')
->exists();
if ($res) {
echo "Draft articles found";
} else {
echo "No draft articles";
}
?>
Результат выполнения кода:
"No draft articles"
Смотрите также
-
метод
doesntExist,
который проверяет отсутствие записей -
метод
count,
который возвращает количество записей -
метод
first,
который возвращает первую запись из выборки -
метод
where,
который добавляет условие фильтрации