Laravel-admin "一对多"模型下的图片删除

在使用Laravel-admin做管理端时,使用removable()删除"一对多"模型下"多"模型下的图片,删除无效

开发环境

"require": {\
    "php": "^7.1.3",\
    "caouecs/laravel-lang": "~4.0",\
    "encore/laravel-admin": "^1.6",\
    "fideloper/proxy": "^4.0",\
    "laravel/framework": "5.8.*",\
    "laravel/tinker": "^1.0",\
    "overtrue/laravel-filesystem-qiniu": "^1.0",\
    "qiniu/php-sdk": "^7.2"\
},

Model

数据库

parent表

DROP TABLE IF EXISTS `parent`;
CREATE TABLE `parent` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

child表

DROP TABLE IF EXISTS `child`;
CREATE TABLE `child` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `parent_id` int(11) unsigned NOT NULL,
   `file` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

数据模型

Parent模型

class Parent extends Model
{
     protected $table = 'parent';

     protected $primaryKey = 'id';

     public $incrementing = true;

     public function child()
     {
         return $this->hasMany(Child::class);
     }
 }

Child模型

class Child extends Model
{
     protected $table = 'child';

     protected $primaryKey = 'id';

     public $incrementing = true;

     public function parent()
     {
         return $this->belongsTo(Child::class);
     }
 }

Controller

protected function form()
 {
     $form = new Form(new Parent);

      $form->number('id', 'ID');
      $form->text('name', '名称');

      $form->hasMany('process_materials', '文件', function (Form\NestedForm $form) {\
          $form->file('file', '附件')
                ->uniqueName()
                ->removable();
         });
 }

异常再现

浏览器->chrome

目前数据库中child表中有一条记录
Laravel-admin "一对多"模型下的图片删除

页面截图

Laravel-admin "一对多"模型下的图片删除

点击图片上的删除按钮,页面预览图消失

Laravel-admin "一对多"模型下的图片删除

点击保存按钮,正常逻辑下,child表中的id=1的那条记录中file字段应当为空,但是实际上该字段仍然是之前的数据。

Laravel-admin "一对多"模型下的图片删除

最后

在单表操作时,removable()可以在删除前端预览的同时,删除数据库中的数据,但是在一对多模型或者多对多模型下就无法实现。

大家是否也遇到过这样问题?
如果有解决的办法或者是我的使用方式不对,请大家告知。

在学习使用Laravel-admin框架的时候发现是真的好用,但是往往越是好用,越是傻瓜式的开发,会存在很多的坑。

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 1
Epona

laravel-admin v1.6.12 版本有这个问题,你看一下你的版本?

Issue

5年前 评论
youth君 (楼主) 5年前
Epona (作者) 5年前
youth君 (楼主) 5年前
Epona (作者) 5年前
youth君 (楼主) 5年前
jansiel 5年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!