【问题标题】:Delete all records from related tables using laravel eloquent使用 laravel eloquent 从相关表中删除所有记录
【发布时间】:2017-04-14 06:47:37
【问题描述】:

我有 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 表中删除其相关记录,此外,还应从存储中删除这些图像。

我怎样才能做到这一点?任何指导将不胜感激。

【问题讨论】:

  • 您是否使用 eloquent 定义了表之间的关系?显示您的表关系
  • 我已经更新了@Rodrane 的问题

标签: laravel-5 laravel-eloquent


【解决方案1】:

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

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

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

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

【讨论】:

  • 请看一下这个网址,它有完整的关系。 kopy.io/q5gDL
  • \App\Courses::with('sessions')->with('lessons')->delete();试试这个
  • 谢谢,它会工作,但我怎样才能删除图像呢?
  • 谢谢,这就是我要找的东西
  • 嘿@KhiradBanu,如果他回答了这个问题,您应该将其标记为已回答。
【解决方案2】:
DB::table('users')->delete();

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

【讨论】:

    【解决方案3】:

    如果您使用 Models::table('abilities') in 设置表名

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

    你可以使用

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

    如此处所述,您可以

    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
       Models::table('abilities');
    }
    

    【讨论】:

      猜你喜欢
      • 2016-06-22
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 2016-02-18
      • 1970-01-01
      • 2019-08-26
      • 2016-05-04
      • 1970-01-01
      相关资源
      最近更新 更多