【问题标题】:How can I convert PHP DB data to JSON with different titles for columns如何将 PHP DB 数据转换为具有不同列标题的 JSON
【发布时间】:2018-12-03 12:58:22
【问题描述】:

如何将从控制器发送到我的视图的 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>

【问题讨论】:

  • 你应该在控制器中而不是在视图中这样做。

标签: php json laravel-5


【解决方案1】:

遍历数据并生成数组并转换为 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);

这是给你的控制器的。

【讨论】:

  • 当我运行它时,我只从数据库中得到一行,而应该更多。可能缺少什么?
猜你喜欢
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 1970-01-01
  • 1970-01-01
  • 2020-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多