Метод delete
Метод delete применяется к экземпляру модели Eloquent
или к построителю запросов и удаляет соответствующую запись
из базы данных. При вызове на модели метод возвращает
bool - true в случае успеха или false при ошибке.
При использовании с построителем запросов возвращает
количество удалённых записей.
Синтаксис
<?php
// Для экземпляра модели
$model->delete();
// Для построителя запросов
Model::where('column', 'value')->delete();
?>
Пример
Давайте удалим конкретную статью по её идентификатору:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
class ArticleController extends Controller
{
public function deleteArticle($id)
{
$article = Article::find($id);
if ($article) {
$res = $article->delete();
echo "Deleted: " . ($res ? "true" : "false");
} else {
echo "Article not found";
}
}
}
?>
Результат выполнения кода при удалении существующей записи:
"Deleted: true"
Пример
Давайте удалим все статьи, у которых поле 'status'
равно 'draft':
<?php
namespace App\Http\Controllers;
use App\Models\Article;
class ArticleController extends Controller
{
public function deleteDrafts()
{
$count = Article::where('status', 'draft')->delete();
echo "Deleted articles: " . $count;
}
}
?>
Результат выполнения кода:
"Deleted articles: 5"
Пример
Давайте удалим статью и проверим, была ли она удалена,
с помощью метода trashed, если используется
SoftDeletes:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Article extends Model
{
use SoftDeletes;
}
?>
<?php
namespace App\Http\Controllers;
use App\Models\Article;
class ArticleController extends Controller
{
public function softDeleteArticle($id)
{
$article = Article::find($id);
if ($article) {
$article->delete();
echo "Soft deleted: " . ($article->trashed() ? "true" : "false");
} else {
echo "Article not found";
}
}
}
?>
Результат выполнения кода:
"Soft deleted: true"
Пример
Давайте удалим все записи из таблицы статей, используя
метод truncate, но будьте осторожны, так как
это действие не может быть отменено и сбрасывает
автоинкремент:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
class ArticleController extends Controller
{
public function truncateArticles()
{
Article::truncate();
echo "All articles have been deleted";
}
}
?>
Результат выполнения кода:
"All articles have been deleted"
Смотрите также
-
метод
save,
который сохраняет модель в базу данных -
метод
update,
который обновляет запись в базе данных -
метод
restore,
который восстанавливает мягко удалённую запись -
метод
forceDelete,
который окончательно удаляет модель из базы данных