我使用此查询从数据库中获取数据
$cats = Category::with(['cat_trans' => function($q) use($lang){
$q->where('lang_code', $lang);
}])->with(['cat_prod' => function($query) use ($lang,$currency){
$query->with(['pro_trans' => function ($q) use ($lang){
$q->where('lang_code', $lang);
}]);
////////////
$query->with(['pro_price' => function ($q) use ($currency){
$q->with('currency_code')->where('cur_code', $currency);
}]);
///////////
}])->whereHas('account_type', function($qr) use ($account_type){
$qr->where('account_type_id', $account_type);
})->get();
我正在尝试从结果中删除空对象,当我尝试这样做时,我得到以下响应
{
"1": {
"id": 1,
"parent_id": null,
"order": 1,
"name": "Moblie",
"slug": "mobile-1",
"created_at": "2018-07-08 09:41:08",
"updated_at": "2018-07-08 10:30:17",
"cat_trans": [
{
"id": 1,
"category_id": 1,
"field": "title",
"value": "Mobile",
"lang_code": "en",
"created_at": "2018-07-08 09:51:59",
"updated_at": "2018-07-08 09:51:59"
},
{
"id": 2,
"category_id": 1,
"field": "desc",
"value": "smart",
"lang_code": "en",
"created_at": "2018-07-08 09:52:41",
"updated_at": "2018-07-08 09:52:41"
},
{
"id": 12,
"category_id": 1,
"field": "slug",
"value": "mobile-1",
"lang_code": "en",
"created_at": null,
"updated_at": null
}
],
}
}
我想从所有响应中删除键“ 1”。
我使用unset通过此代码获取此值
foreach ($cats as $k) {
if (count($k->cat_prod) == 0) {
unset($cats[$va]);
}
$va++;
}
然后我尝试使用array_values,但显示我只能在不是对象的数组上使用array_values。
答案 0 :(得分:0)
只需执行以下操作即可删除键“ 1”
array_values((array)$cats)
由于Laravel Query返回对象,导致您收到诸如“只能在数组上使用”之类的函数错误,所以您只需要对其进行类型转换。
答案 1 :(得分:0)
$ cats-> toArray(),如果您需要将对象转换为数组或在某些特定条件下进行转换
答案 2 :(得分:0)
您的输出看起来像JSON,因此您可以执行此操作以消除1
:
json_encode( $cats->{1} );