【发布时间】:2014-02-08 22:40:34
【问题描述】:
我最近一直在试验 Laravel 4,到目前为止,它使用起来很愉快。但是,我遇到了一个问题,不是 Laravel 4,而是我自己的无能。
我有一个包含 3 行和 4 列的数据库。例如,假设列是:
content_id, 内容类型, 内容数据, 时间戳
'content_data' 列包含一个由大约 4 个键值对组成的 JSON 编码数组。
当我从数据库中检索这些行(使用 Eloquent)并将数据传递到我的视图中时,如何将 JSON 解析到我的刀片模板中?
在搜索并参考 Laravel 文档后,我的想法是您不能,因此我尝试将 JSON 解码回控制器中的数组,然后将其传递到我的视图中。
到目前为止,我在课堂上尝试了以下方法:
<?php
class PageController extends \BaseController {
public function index()
{
$data = Content::
->where('content_type', 1)
->get();
foreach($data as $content)
{
$items[] = json_decode($content->content_data);
}
return View::make('pages.page2')
->with('data', $data)
->with('items', $items);
}
}
但是,在我的 Blade 模板中,当我运行一个 foreach 循环来遍历提取的行时,我尝试在第一个循环中运行另一个 foreach 循环,该循环遍历 $items 数组以提取它们的值,但因为它是一个循环内循环,我得到重复的 json 值。
我的刀片模板如下所示:
@extends('layouts.pages');
@section('content_body')
<h1>My <span>title</span></h1>
<div class="column col-1">
<ul>
{{-- loop through the database rows --}}
@foreach($data as $row)
{{-- loop through the json decoded values --}}
@foreach($items as $item)
{{ $item['title'] }}
@endforeach
@endforeach
</ul>
</div>
@stop
不确定我的解释是否正确,但基本上我只是希望能够在显示提取的数据库行的循环中解析我的 json 编码数组
我希望这对可以提供帮助的人有意义。
【问题讨论】:
-
试试
$content->content_data = json_decode($content->content_data)。 -
所以你的意思是在我的控制器中执行 foreach 循环,而不是将 json_decoded 值分配到 $items 数组中,我应该将它分配给 $content->content_data?
-
我试试,不知道是什么问题。
-
感谢您的尝试,但没有成功。它只检索最后一行的 $data_content 列,因此我将它放入数组中。
标签: php arrays json foreach laravel-4