首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为多个用户存储多个值?

如何为多个用户存储多个值?
EN

Stack Overflow用户
提问于 2018-01-05 10:25:21
回答 1查看 79关注 0票数 0

这是我的html表。

代码语言:javascript
复制
Checkbox    | Name
Checkbox    | abc
Checkbox    | efg
Checkbox    | xyz

-

代码语言:javascript
复制
//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。

我的数据库

代码语言:javascript
复制
user_id | franchise_id
100     |   11 
100     |   53
100     |   54
100     |   56
200     |   10
200     |   15

在我的数据库中,我希望将它存储在另一个表列item_assigned中,如下所示

代码语言:javascript
复制
id   | user_id | vendor_id | franchise_assigned
1    |  100    |     1     | 11,53
2    |  200    |     2     | 10

当用户点击submit保存数据时,会通过循环检查franchise_assigned列中是否存在该加盟店id,将已有数据与已提交数据进行比较。

我遇到了将基于用户的特许经营权存储到列中的问题。如何在控制器中编写函数和查询来将数据存储到数据库中?

EN

回答 1

Stack Overflow用户

发布于 2018-01-05 13:54:44

假设您的关系表名称为item_assigned,其对应的模型名称为ItemAssigned。你可以通过一些简单的步骤来解决你的问题。

首先,您可以使用user_id检查现有记录,如下所示-

代码语言:javascript
复制
$items = ItemAssigned::where('user_id',$your_user_id_you_want_to_insert_record_for)->first();

我假设这个表中只有一个用户的条目记录。或者用于组合的user_idvendor_id的另外一个条目记录。如果以后是这样的话你可以做点什么-

代码语言:javascript
复制
$items = ItemAssigned::where('user_id',$user_id)->where('vendor_id',$vendor_id)->first();

现在,您希望通过检查francise_id是否已经存在来存储它。要做到这一点,你需要抓取franchise_assigned并解析它,然后像下面这样检查-

代码语言:javascript
复制
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));
  }
}

如果需要删除旧值并添加新值,则创建一个新数组并附加每个非旧值的值。在此之后添加新的价值。

代码语言:javascript
复制
$new_ar = array();
$count = 0;
foreach($ar as $a){
    if($a!=$old_francise_value)
       $new_ar[$count++] = $a;
}
$new_ar[$count++] = $new_francise_value;

最后,用逗号分隔的值再次合并它-

代码语言:javascript
复制
$franchise_assigned_new = implode(",",$ar);

并更新它-

代码语言:javascript
复制
$items->franchise_assigned = $franchise_assigned_new;
$items->save();

希望它能有所帮助:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48106383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档