如何在 Laravel 8 中使用 foreach 从多选中保存数据?

Posted

技术标签:

【中文标题】如何在 Laravel 8 中使用 foreach 从多选中保存数据?【英文标题】:how to save data from a multiselect with a foreach in Laravel 8? 【发布时间】:2021-09-07 07:40:08 【问题描述】:

我需要保存实际上在 vue.js 中的多选数据,但是当我想将数据保存在数据库中时,它会显示以下错误。

SQL: 插入advisor_assignments (advisor_id, category_region_id, updated_at, created_at) 值 (48, ["2,6,4"], 2021-06-23 17:55:38, 2021-06-23 17:55:38)

我的代码

$categorias_ids = $request->category_region_id;

        foreach($request->category_region_id as $r)
            $resep[] = $r;
            advisorAssignment::create([
                'advisor_id' => $advisor->id,
                'category_region_id' => json_encode($resep)
            ]);
        

【问题讨论】:

你能在数据库表中显示完整的错误 category_region_id 应该是文本数据类型吗?也可以更改 'category_region_id' => json_encode($r)。你也可以显示 advisorAssignment 模型。更好地将该列转换为数组 category_region_id 在我的数据库中是整数。但我已经尝试过 json_decode($resep) 并且它也不起作用。 如果它的数组那么你可以通过下面的答案来解决。如果没有,那么你可以 dd(($request->category_region_id) 并发布它 【参考方案1】:

试试这个:

$categorias_ids = $request->category_region_id;

    foreach($categorias_ids as $r)
        advisorAssignment::create([
            'advisor_id' => $advisor->id,
            'category_region_id' => $r,
        ]);
    

【讨论】:

这样它会生成这个错误数据在第 1 行被截断了列 'category_region_id' (SQL:插入到advisor_assignments (advisor_id, category_region_id, updated_at, created_at) 值(67, 2,6,4,5, 2021-06-23 20:10:11, 2021-06-23 20:10:11)) 尝试使用explode():$categorias_ids = explode(",", $request->category_region_id);

以上是关于如何在 Laravel 8 中使用 foreach 从多选中保存数据?的主要内容,如果未能解决你的问题,请参考以下文章

foreach() 参数必须是数组|对象类型,使用 cookie 时在 Laravel 8 中给出的字符串

嵌套的 foreach 循环使用 if 条件创建重复记录 - PHP Laravel 8

LARAVEL 5.8 - 在 foreach 中使用数组的 WHERE LIKE 子句的多个条件没有给出完整的结果

如何在控制器传递变量(laravel)中使用刀片进行 foreach

如何在 laravel 中使用 foreach 从 json 文件中获取所有数据?

如何在 Laravel 的 PHP/Blade 中使用 Foreach 循环?