这是我的html表。
Checkbox | Name
Checkbox | abc
Checkbox | efg
Checkbox | xyz-
//checkbox is an array
<td><input type="checkbox" name="id_franchise[]" value="{{ $item->id_franchise}}"></td>
//POST data
array:3 [▼
0 => "11"
1 => "53"
2 => "10"
]例如特许经营ID11和53属于用户ID100,而特许经营ID10属于用户ID200。
我的数据库
user_id | franchise_id
100 | 11
100 | 53
100 | 54
100 | 56
200 | 10
200 | 15在我的数据库中,我希望将它存储在另一个表列item_assigned中,如下所示
id | user_id | vendor_id | franchise_assigned
1 | 100 | 1 | 11,53
2 | 200 | 2 | 10当用户点击submit保存数据时,会通过循环检查franchise_assigned列中是否存在该加盟店id,将已有数据与已提交数据进行比较。
我遇到了将基于用户的特许经营权存储到列中的问题。如何在控制器中编写函数和查询来将数据存储到数据库中?
发布于 2018-01-05 13:54:44
假设您的关系表名称为item_assigned,其对应的模型名称为ItemAssigned。你可以通过一些简单的步骤来解决你的问题。
首先,您可以使用user_id检查现有记录,如下所示-
$items = ItemAssigned::where('user_id',$your_user_id_you_want_to_insert_record_for)->first();我假设这个表中只有一个用户的条目记录。或者用于组合的user_id和vendor_id的另外一个条目记录。如果以后是这样的话你可以做点什么-
$items = ItemAssigned::where('user_id',$user_id)->where('vendor_id',$vendor_id)->first();现在,您希望通过检查francise_id是否已经存在来存储它。要做到这一点,你需要抓取franchise_assigned并解析它,然后像下面这样检查-
if($items!=null){
$franchise_assigned = $items->franchise_assigned;
$ar = (explode(",",$franchise_assigned));
$ar = array_replace($ar,array_fill_keys(array_keys($ar, $francise_id_to_check), $francise_id_to_be_replaced_by));
}
}如果需要删除旧值并添加新值,则创建一个新数组并附加每个非旧值的值。在此之后添加新的价值。
$new_ar = array();
$count = 0;
foreach($ar as $a){
if($a!=$old_francise_value)
$new_ar[$count++] = $a;
}
$new_ar[$count++] = $new_francise_value;最后,用逗号分隔的值再次合并它-
$franchise_assigned_new = implode(",",$ar);并更新它-
$items->franchise_assigned = $franchise_assigned_new;
$items->save();希望它能有所帮助:)
https://stackoverflow.com/questions/48106383
复制相似问题