
Delete all related comments on deleting a post in Laravel
You can delete all the related comments to a post in laravel using the deleted event.
In Laravel, the deleted event trigger can be used to perform additional actions related to a deleted record. For example, if you have a Post model with a relationship to a Comment model, you can use the deleted event trigger to automatically delete all related comments when a post is deleted.
To delete the comments table records related to posts table record using deleted event, you have to create the posts table with id, title, slug ,body, created_at, updated_at columns and comments table with id, post_id, body, created_at and updated_at columns where post_id is the foreign key related to posts table id column. You also have to create the relationship between two tables (posts and comments) using hasMany relationship in the Post model.
app\Models\Post
class Post extends Model
{
use HasFactory;
protected $table = "posts";
protected $fillable = [
'title', 'slug', 'body', 'created_at', 'updated_at'
];
protected static function boot(){
parent::boot();
static::deleted (function($post){
$post->comments()->delete();
});
}
public function comments(){
return $this->hasMany (Comment::class);
}
}
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Models\Post;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
Post::whereId(1)->first()->delete();
echo "Post with comments deleted";
});
Manually delete the comments table records
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Models\Post;
use App\Models\Comment;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
$postId = 1;
Post::whereId($postId)->delete();
Comment::wherePostId($postId)->delete();
echo "deleted";
});
If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.
Don't forget to share this article! Help us spread the word by clicking the share button below.
We appreciate your support and are committed to providing you valuable and informative content.
We are thankful for your never ending support.
Random Code Snippet Queries: Laravel
- How to insert value to additional columns in pivot table in laravel
- Non-static method App\Http\Helper::myFunction() should not be called statically
- How to add active class to menu item in laravel
- Skip first n record and display rest records in laravel view
- How to authenticate admin users in Laravel ?
- Root composer.json requires php ^7.3 but your php version (8.0.0) does not satisfy that requirement
- How to add unique records in pivot columns of Laravel pivot table
- Display data in table using foreach in Laravel
- How to Access Array in blade laravel
- How to add columns in existing table using migration in laravel
- Get the post details if it has at least one comment in comments table
- How to create projects method with belongstomany relationship in user model
- Shorter syntax for whereHas with call back function in laravel
- How to create laravel project using composer
- How to validate website url in laravel using validaiton
- How to restore multiple records after soft-deletes in Laravel
- How to remove P tag from CkEditor in Laravel?
- Route group with URI prefix using middleware and route name prefixes
- Submit form without CSRF token in Laravel
- Trying to access array offset on value of type null error in laravel
- 419 page expired error in Laravel
- Create records using relationship in laravel
- Call to undefined method Illuminate\Support\Facades\Request::all()
- How to start websocket server in laravel
- Target class [admin] does not exist.