首页 > 解决方案 > 使用 Laravel 时如何删除 MongoDb json 中的属性

问题描述

我想在我的 MongoDb 中修复一些东西,我需要快速添加属性。

我使用该add方法快速地做到了这一点。

现在,我想修复和删除一些属性。

如您所见,通过使用isset($department[$arr['attribute']])我会知道该属性是否存在。

如果属性存在,我设置空值$department[$arr['attribute']] = '';,然后我使用unset方法unset($department[$arr['attribute']]);

remove 方法没有完成它的工作。

任何想法为什么?

<?php


namespace App\Http\Controllers\Api;

use App\Department;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;

class FixController extends Controller
{

    protected $concept;

    /**
     * DepartmentController constructor.
     */
    public function __construct()
    {
        $this->middleware(
            function ($request, $next) {
                $this->concept = Auth::user()->current_desk_artifacts[0];
                return $next($request);
            }
        );
    }

    public function add($attribute, $value)
    {

        $counter = 0;

        $arr = [
            'attribute' => $attribute,
            'value' => $value,
            'counter' => &$counter
        ];

        Department::chunk(
            100,
            function ($departments) use ($arr) {
                print_r($arr);
                echo '<br/>';
                foreach ($departments as $department) {
                    if (
                    !isset($department[$arr['attribute']])
                    ) {
                        $department[$arr['attribute']] = $arr['value'];
                        $department->save();
                        $arr['counter']++;
                        echo $arr['counter'];
                        echo '<br/>';
                    }
                }
            }
        );

    }

    public function remove($attribute, $value)
    {

        $counter = 0;

        $arr = [
            'attribute' => $attribute,
            'value' => $value,
            'counter' => &$counter
        ];

        Department::chunk(
            100,
            function ($departments) use ($arr) {
                print_r($arr);
                echo '<br/>';
                foreach ($departments as $department) {
                    if (
                    isset($department[$arr['attribute']])
                    ) {
                        $department[$arr['attribute']] = '';
                        unset($department[$arr['attribute']]);
                        $department->save();
                        $arr['counter']++;
                        echo $arr['counter'];
                        echo '<br/>';
                    }
                }
            }
        );

    }

}

标签: phpmongodblaravel

解决方案


推荐阅读