Метод doesntExist
Метод doesntExist применяется к запросу Eloquent
или Query Builder и возвращает логическое значение true,
если ни одна запись не соответствует условиям запроса,
и false в противном случае. Это противоположность
методу exists. Метод полезен для проверки отсутствия
данных перед выполнением каких-либо действий, например,
перед созданием новой записи, чтобы избежать дублирования.
Синтаксис
<?php
Model::where($column, $operator, $value)->doesntExist();
?>
Пример
Проверим, существует ли статья с идентификатором 1:
<?php
use AppModelsArticle;
$res = Article::where('id', 1)->doesntExist();
echo $res;
?>
Результат выполнения кода:
"false"
Так как статья с id равным 1 существует,
метод вернул false.
Пример
Проверим, есть ли статьи со статусом 'archived':
<?php
use AppModelsArticle;
$res = Article::where('status', 'archived')->doesntExist();
echo $res;
?>
Результат выполнения кода:
"true"
Поскольку архивных статей нет, метод вернул true.
Пример
Используем метод для условного создания записи, если она отсутствует:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
class ArticleController extends Controller
{
public function store()
{
$title = 'article';
if (Article::where('title', $title)->doesntExist()) {
$article = new Article();
$article->title = $title;
$article->status = 'published';
$article->save();
echo "article created";
} else {
echo "article already exists";
}
}
}
?>
Результат выполнения кода при первом запуске:
"article created"
Результат выполнения кода при повторном запуске:
"article already exists"