首页 > 解决方案 > 如何将 PHP DB 数据转换为具有不同列标题的 JSON

问题描述

如何将从控制器发送到我的视图的 php 数据转换为定义了新标题的 JSON 对象,并能够将其包装在脚本 html 标记中。我希望数据具有与我在下面的视图中设置的相同的标题,尽管数据库标题不同。

控制器,

$deals = "SELECT deals.id, categories.category_name, deals.title, deals.price, deals.imagepath FROM deals INNER JOIN categories on     deals.category_fk = categories.id INNER JOIN masters on masters.id =     deals.masterid_fk";

$deals = DB::select($deals);

 return view('pages.home',['deals'=> $deals]);
 }
 }

在我看来,我有:

@foreach ($deals as $deal)


"id": {{$deal->id}},
"category": {{$deal->category_name}},
"sub_category": {{$deal->master_name}},
"rating": "5",
"title": {{$deal->title}},
"price": {{$deal->price}},
"image": "{{$deal->imagepath}}"


@endforeach

我希望我的最终产品看起来像这样 [

    { 
      "id": 225,
      "category": "Home",
      "sub_category": "Dusting",
      "rating": "3",
      "title": "Complete dusting of all furniture",
      "price": "$8,000",
      "image": "/img/apartment-architecture-carpet-584399.jpg"
    }
 ]
 </script>

标签: phpjsonlaravel-5

解决方案


循环遍历数据并生成数组并转换为 JSON:

$for_json = array();
$counter = 0;
foreach ($deals as $deal){
   $for_json[$counter]['id']           = $deal->id;
   $for_json[$counter]['category']     = $deal->category_name;
   $for_json[$counter]['sub_category'] = $deal->master_name;
   $for_json[$counter]['rating']       = 5;
   $for_json[$counter]['title']        = $deal->title;
   $for_json[$counter]['price']        = $deal->price;
   $for_json[$counter]['image']        = $deal->imagepath
   $counter++;
}

$deals = json_encode($for_json);

这是给你的控制器的。


推荐阅读