laravel 如何在PHP中从数组中删除项目数组

m4pnthwp  于 2022-12-19  发布在  PHP
关注(0)|答案(1)|浏览(174)

我正尝试删除此表中名为Offer的列中的用户ID。用户ID以字符串形式插入,如"1,2,3,4"。我有一个select multiple,其中包含表中该offer的批准用户列表。我在删除此列字段中的userId数组时遇到问题。我的函数代码如下:

Public function removeAccess(Offer $offer, Request $request)
{
    $this->validate($request, [
        'private_access' => 'required',
    ]);

    $current_allowed = array($offer->private_allowed);
    $remove_allowed = $request->private_access;
    $allowed = array_diff_key($current_allowed, array_flip($remove_allowed));
    $offer->private_access = $allowed;
    $offer->save();

    return redirect()->back()->with('status', 'Publisher(s) successfully removed from private access.');
}

我做错了什么?我以为我会对每个$request->private_access做一个循环,然后检查它是否在数组中,如果是,就删除它。我在网上找到了另一个代码来做我如何显示它,但仍然遇到问题,即使我从〈select multiple〉输入中只选择了1,它也会删除所有的$request->private_access
问题解决了!经过更多的研究和另外24小时的断断续续的弄清楚这个问题,下面是现在工作的任务的函数。
对于任何遇到同样问题的人来说,重要的是,在select中,我必须在name后面添加[]-"name []"以将值放入一个数组〉我还必须将数据库中的数组转换为与多选附带的数组相似。
x一个一个一个一个x一个一个二个x

0lvr5msh

0lvr5msh1#

我想你的代码应该是这样的

Public function removeAccess(Offer $offer, Request $request) {
    $this->validate($request, [
       'private_access' => 'required',
    ]);
    //make current allowed from db an array
    $current_allowed = explode(",",$offer->private_allowed);
    $remove_allowed = $request->private_access;
    //we must also flip array from database then compare with array_diff_key
    $allowed = array_diff_key(array_flip($current_allowed), array_flip($remove_allowed));
    $offer->private_access = $allowed;
    $offer->save();
    return redirect()->back()->with('status', 'Publisher(s) successfully removed from private access.');
    }

相关问题