抹茶kimi 2020-02-19 14:24 采纳率: 0%
浏览 1504

Laravel-admin 数据表单问题

最近发现的一个奇怪的问题,Foo 表下面有多个 Bar,Bar表需要上传多张图片,于是就产生了如下的表单结构:

$form = new Form(new Foo());

$form->HasMany("bars", function($form) {
    $form->multipleImage("images");
});

这样在编辑的时候会显示 相同的图片(多个子Bar的显示数据是一样的),但是数据库里是不一样的数据。请问是什么原因?有什么解决办法吗?

用的是 Laravel 5.6 / Laravel-admin 1.7.9

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-07-25 20:34
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题分析: 根据提供的表单结构,使用Laravel-admin插件为Foo表创建一个多条数据的关联表单,其中每条数据都可以上传多张图片。在编辑时,可能会遇到相同的图片显示在多个子Bar上,但实际数据库中存储的是不同的数据。这可能是由于Laravel-admin插件在处理多条数据关联表单时没有正确处理子Bar之间的数据隔离所导致的。 解决办法:
    1. 添加图片隔离字段:在Bar表中添加一个隔离字段,用于区分不同条目的图片。可以在表单结构中为每个子Bar添加一个隐藏的input字段,用于存储区分不同图片的值,以确保不同子Bar间的图片数据不会混淆。 案例:
    $form = new Form(new Foo());
    $form->hasMany("bars", function($form) {
        $form->hidden("id"); // 添加隐藏字段id
        $form->multipleImage("images");
    });
    
    1. 自定义处理逻辑:通过自定义处理逻辑,在保存图片数据时手动为每个条目添加一个独特标识符,以确保不同子Bar之间的图片数据不会混淆。 案例:
    $form = new Form(new Foo());
    $form->hasMany("bars", function($form) {
        $form->multipleImage("images")->saving(function($images) {
            // 为每个子Bar的图片数据添加独特标识符
            foreach($images as $key => $image) {
                $images[$key]["bar_id"] = $form->model()->id;
            }
            return $images;
        });
    });
    

    以上是针对该问题可能的解决方案,具体实现方法可能会根据项目的具体需求和数据结构而有所差异。希望能帮到你解决这个奇怪的问题。

    评论

报告相同问题?