如何在 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