18910140161

foreach 循环问题 if 无法进行判断

顺晟科技

2022-09-15 11:38:03

170

    public function batch(Request $request)
    {
        $ids =  $request->input('id');  //["1","2"]
        $tags = $request->input('tags'); //["发货","新产品"]
        $Influencers = Influencers::whereIn('id', $ids)->pluck('tags')->toArray(); 
        //数据库里面的标签 ["发货","新产品"]
        foreach ($Influencers as $Influencer) {
            $dbTags = explode(',', preg_replace('/\s+/', '', $Influencer));
            foreach ($tags as $tag) {
                foreach ($dbTags as $t) {
                    foreach ($ids as $id) {
                        if ($t === $tag) { 
                        //我想用户传进来了的标签 跟数据库的标签进行一个判断如果不存在在添加 如果存在就不添加,
                            Influencers::where('id', $id)->update(['tags' => DB::raw("CONCAT_WS(',', tags, ' $t')")]);
                        } else {
                            print "<li>$t - $tag -  $id</li>";
                        }
                    }
                }
            }
        }
    }

我测试了很多方法都不知道怎么解决,
我想用户传进来了的标签 跟数据库的标签进行判断如果不存在在添加 如果存在就不添加,
举个例子:
比如数据库已经有 拒绝,成功,就不做任何的操作
如果数据库只有,拒绝,用户如果传过来是 ['拒绝','成功'] 就吧成功添加进去
所有传进来的数据都是[数组]

这么多层嵌套循环,应该做优化

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航