我有一个表Pemeliharaan
和一列pertanyaan
。在本专栏中,我有像这样的数据json
我更新了我的问题,这是dd没有在关系表用户和alat上显示数组。怎么样?我需要在控制器中再次声明吗?我再次更新,现在可以显示数据json。我该如何解析?
Pemeliharaan {#274 ▼
#table: "pemeliharaan"
#connection: "mysql"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:9 [▼
"id" => 42
"user_id" => 2
"alat_id" => 1
"pertanyaan" => array:8 [▼
"question1" => "Periksa kondisi kelistrikan dan kabel"
"answer1" => "false"
"question2" => "Periksa kondisi kabel dan tempat sambungan"
"answer2" => "false"
"question3" => "Periksa kondisi pencetakan (tinta dan kertas printer)"
"answer3" => "false"
"question4" => "Fix and squish bugs"
"answer4" => "false"
]
"catatan" => "22-11-1996"
"status" => "Harian"
"deleted_at" => null
"created_at" => "2019-03-28 15:41:44"
"updated_at" => "2019-03-28 15:41:44"
]
#original: array:9 [▶]
此数据是问答。我有这样的看法。我有个功能展示和showQuestion
。
这样查看
//View // no problem on here
<div class="box-body table-responsive no-padding">
<table class="table table-hover">
<tbody><tr>
<th>No</th>
<th>Nama Alat</th>
<th>Waktu</th>
<th>User Input</th>
<th>Action</th>
<th>Tanggal</th>
</tr>
@php
$no=0;
@endphp
@foreach ($pemeliharaan as $i)
<tr>
<td>{{ ++$no }} </td>
<td>{{ $i->alat->nama_alat}}</td>
<td>{{ $i->status}}</td>
<td>{{ $i->user->name}}</td>
<td> <a href="/user/show/question/{{ $i->id }}" > <span class="label label-primary">Lihat Data</span> </a></td>//in here redirect to showQuestion
<td>{{ $i->created_at}}</td>
</tr>
@endforeach
</tbody></table>
</div>
viewQuestion
(如果我单击表格上的按钮将查看此数据)
@if( !is_null($pemeliharaan) )
<p> Laporan : {{ $pemeliharaan->status }} </p>
<p> Tanggal : {{ $pemeliharaan->created_at }} </p>
<p> Jenis Alat : {{ $pemeliharaan->alat->nama_alat }} </p>
<p> User : {{ $pemeliharaan->user->name }} </p>
<p> pertanyaan : {{ $pemeliharaan['question1'] }} </p>// now showing anything
@endif
@foreach(json_decode($pemeliharaan, true) as $value)
pertanyaan : {{ $value->pertanyaan['question1'] }}
@endforeach //corect me at here
//this is I want to decode this json but i dont
知道我在做什么哈哈:(
此视图(无问题和答案)没有错误。
这是我的控制器:
public function show()
{
$pemeliharaan = Pemeliharaan::with(['user','alat'])->get();
return view('users.view',['pemeliharaan' => $pemeliharaan]);
}
public function showQuestion($id)
{
$pemeliharaan = Pemeliharaan::find($id);
$pemeliharaan->pertanyaan = json_decode($pemeliharaan->pertanyaan,true);
return view('users.view_question',compact('pemeliharaan'));
}
有这样的错误
未定义索引:alat(查看:/var/www/html/new/resources/views/users/view_question.blade.php)
我不知道如何解码以及如何在刀片中查看
答案 0 :(得分:0)
您需要解码特定列而不是整个对象,请尝试:
public function showQuestion($id)
{
$pemeliharaan = Pemeliharaan::find($id);
$pemeliharaan->pertanyaan = json_decode($pemeliharaan->pertanyaan,true);
return view('users.view_question',compact('pemeliharaan'));
}
然后检查 viewQuestion ,如果$pemeliharaan
为null:
@if( !is_null($pemeliharaan) )
<p> Laporan : {{$pemeliharaan['status']}} </p>
<p> Tanggal : {{ $pemeliharaan['created_at'] }} </p>
<p> Jenis Alat : {{ $pemeliharaan->alat->nama_alat }} </p>
<p> User : {{ $pemeliharaan->user->name}} </p>
<p> pertanyaan : {{ $pemeliharaan['question1'] }} </p>
@endif
要解析所有问题/答案,请尝试:
@foreach($pemeliharaan->pertanyaan as $key => $value)
pertanyaan : {{ $key . ' - ' . $value}}
@endforeach
随心所欲地玩这个游戏。
答案 1 :(得分:0)
您可以使用json转换器将字段直接转换为json:
https://laravel.com/docs/5.8/eloquent-mutators#array-and-json-casting
protected $casts = [
'pertanyaan' => 'json',
];
然后,如果要显示它,我建议您这样做:
创建刀片文件components/json.blade.php
:
@if (!is_string($value))
@foreach($value as $key => $value)
<span class="ml-3"><strong>{{ ucfirst($key) }}</strong> : @include('components.json')</span>
@endforeach
@else
{{ $value }}
@endif
然后在您的主文件中:
@include('components.json', ['value' => $pemeliharaan->pertanyaan])
(我不知道pemeliharaan
和pertanyaan
是什么意思,所以也许是一团糟,但是您应该将json转换为值传递给数组
结果将是这样显示的所有json数据的递归列表:
Question1 : Periksa kondisi kelistrikan dan kabel
Answer1 : false
Question2 : Periksa kondisi kabel dan tempat sambungan
Answer2 : false