首页 > 解决方案 > 在使用具有不同外键的 laravel 时如何删除

问题描述

这是我的代码:

我创建了一个表image_upload。在此表中有 2 个 colou,即post_id, post_name, deleted_at, created_at, updated_at。Post id 属于 post 表。

当用户删除帖子时,我试图在 laravel 中使用软删除并更新deleted_atimage_upload 表。我在我的模型中添加了以下代码

后模型:

public function imageLinks()
    {
        return $this->hasMany(ImageUpload::class, 'post_id'); 
    } 

当我删除帖子时,我收到此错误。我的专栏名称是post_id,但它会占用id. 我不明白具体是什么问题。

“消息”:“SQLSTATE [42S22]:未找到列:1054 'where 子句'中的未知列 'id'(SQL:更新image_uploaddeleted_at= 2020-07-03 21:28:14,updated_at= 2020-07-03 21: 28:14 哪里id是 null)",

标签: phplaraveleloquentcascading-deletes

解决方案


我建议您在 Delete_post() 函数中添加这几行:例如

$post=post::where('id',=,$id)->get(); 
$post->delete();
  
//And you can 

$images=imageUpload::where('post_id',=,$post['id'])->delete();

//Or 

$post->imageLinks()->delete();

但我不明白为什么你在 images 表中添加了 post_name ,这是没有意义的,因为你可以使用关系来获取它。


推荐阅读