I wanted to fix some things in my MongoDb and I needed to add attributes fast.
I did this, fast, using the add
method.
Now, I want to fix and remove some attributes.
As you can see, by using isset($department[$arr['attribute']])
I will know if the attribute exists.
If the attribute exists, I set the empty value $department[$arr['attribute']] = '';
and then I use the unset
method unset($department[$arr['attribute']]);
The remove method does'n do it's job.
Any ideas why ?
<?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/>';
}
}
}
);
}
}