php - 使用 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/>';
}
}
}
);
}
}
解决方案
推荐阅读
- azure - Enable automatic key rotation for keyvault
- paypal - PayPal IPN 和自动退货
- php - 如何使用php将所有表从一个数据库复制到另一个数据库?
- powershell - Powershell,遍历CSV文件并连续搜索字符串,然后导出
- php - 在特定实体对象的存储库中使用不同的实体管理器
- javascript - 根据页面添加react组件到header
- android - Android - 防止打开上一个片段
- arrays - 从包含在 [[ ]] 数组之间的 json 中提取值
- python - tf.Estimator 训练后检索张量(Numpy)值
- r - t 测试将一行(参考样本)与数据框中的所有其他行进行比较