Я хотел исправить некоторые вещи в моем MongoDb, и мне нужно было быстро добавить атрибуты.
Я сделал это быстро, используя метод add
.
Теперь я хочуисправьте и удалите некоторые атрибуты.
Как видите, с помощью isset($department[$arr['attribute']])
я узнаю, существует ли атрибут.
Если атрибут существует, я задаю пустое значение $department[$arr['attribute']] = '';
изатем я использую метод unset
unset($department[$arr['attribute']]);
Метод удаления не выполняет свою работу.
Есть идеи, почему?
<?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/>';
}
}
}
);
}
}