Метод isNot
Метод isNot применяется к экземпляру модели Eloquent
и сравнивает его с другой моделью. Он возвращает true,
если модели ссылаются на разные записи в базе данных.
Сравнение происходит по ключевому полю (обычно id)
и имени таблицы. Это удобный способ проверить, что две
модели не являются одним и тем же объектом.
Синтаксис
<?php
$model->isNot($otherModel);
?>
Пример
Давайте получим две статьи из базы данных и проверим, являются ли они разными записями:
<?php
use AppModelsArticle;
$article1 = Article::find(1);
$article2 = Article::find(2);
$res = $article1->isNot($article2);
echo $res;
?>
Результат выполнения кода:
"true"
Пример
Теперь сравним одну и ту же модель, сохранённую в две переменные.
Метод вернёт false, так как это одна запись:
<?php
use AppModelsArticle;
$article1 = Article::find(1);
$article2 = $article1;
$res = $article1->isNot($article2);
echo $res;
?>
Результат выполнения кода:
"false"
Пример
Метод isNot часто используется в условиях для
исключения текущей модели из коллекции. Например, получим
все статьи, кроме одной:
<?php
use AppModelsArticle;
$current = Article::find(1);
$allArticles = Article::all();
$filtered = $allArticles->filter(function ($article) use ($current) {
return $current->isNot($article);
});
foreach ($filtered as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
["article 2", "article 3", "article 4", "article 5"]
Пример
Метод isNot также работает с новыми моделями, которые
ещё не были сохранены. Сравнение происходит по ключевому полю:
<?php
use AppModelsArticle;
$article1 = Article::find(1);
$article2 = new Article();
$article2->id = 2;
$res = $article1->isNot($article2);
echo $res;
?>
Результат выполнения кода:
"true"