使用laravel eloquent删除相关表中的所有记录

时间:2017-04-14 06:47:38

标签: laravel-5 laravel-eloquent

我有3张桌子。

Posts
Likes
Post_images.

// Model Relations.
Posts hasMany likes.
Likes belongs to Posts.
post hasMany PostImages
post_imags belongs to Posts.

现在,当我删除帖子记录时,我想从likes表和post_images表中删除其相关记录,此外,还应从存储中删除此图像。

我怎样才能做到这一点?任何指导都将受到高度赞赏。

3 个答案:

答案 0 :(得分:2)

如果我理解正确,您的查询应该是这样的。但是你无法删除具有雄辩关系的图像。所以你需要做一些像

这样的事情
 $courses = \App\Course::all();
 foreach($courses $ $course){
      Storage::delete($course->image_column_name);
 }

 \App\Courses::with('sessions')->with('lessons')->delete();

如果您可以共享模型功能,数据库架构和存储信息(如存储课程图像的位置),我可以给您更好的答案...

答案 1 :(得分:0)

DB::table('users')->delete();

所有用户都会从“用户”表中删除

答案 2 :(得分:0)

如果您使用以下表中的Models :: table('abilities')设置表名,

find

您可以使用

    Schema::create(Models::table('abilities'), function (Blueprint $table) {
        $table->bigIncrements('id');
        // other fields
    }

如此处所述,您可以

    DB::table(Models::table('abilities'))->delete();