在 JSON 解码后在 laravel 中分解 PHP

我想展开解码后的 JSON,这样我就可以删除间距并调用表中的某些值。我有信心我需要使用 explode 来实现我第一次使用它后的效果,所以我不确定如何使用它


我的控制器是:


public function index($id)

{


    $message = Message::find($id);

    $content = json_decode($message->content,TRUE);


    var_dump($content);


    explode(',',',{,},[,]');


    return view('details', ['message' => $message]);

}

我有一个标准表


<td>{{$message->type}}</td>

<td>{{$message->content}}</td>

<td>{{$message->response}}</td>

<td>{{$message->id}}</td>

我目前在控制器上有一个 vardump,所以我可以看到正在解析的内容(并测试我的解码是否正常工作)。它返回以下内容:


array(2) { ["text"]=> string(4) "test" ["suggestions"]=> array(1) { [0]=> array(1) { ["reply"]=> array(2) { ["text"]=> string(4) "test" ["postbackData"]=> string(36) "e05ad1f0-a0f8-4a56-a8c7-67f56ba9fe4c" } } } }

我想展开这个,这样我就可以将它们中的每一个提取到我表中的不同列中


MMTTMM
浏览 158回答 2
2回答

阿晨1998

所以最好在这种情况下使用访问器。您可以在此处找到有关它们如何工作的文档https://laravel.com/docs/7.x/eloquent-mutators#defining-an-accessor在我们的消息模型中namespace App;use Illuminate\Database\Eloquent\Model;class Message extends Model{&nbsp; &nbsp; public function getContentAttribute($value)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; return json_decode($value);&nbsp; &nbsp; }}在你的控制器中&nbsp;public function index($id)&nbsp;{&nbsp; &nbsp; $message = Message::find($id);&nbsp; &nbsp; return view('details', ['message' => $message]);&nbsp;}您的看法<p>{{property_exists($message->content, 'text') ? $message->content->text:property_exists($message->content, 'log') ?&nbsp; $message->content->log :property_exists($message->content, 'data')? $message->content->data: ""}}</p>

Helenr

在你的控制器中$message = Message::find($id);$content = json_decode($message->content,TRUE);return view('details', ['message' => $message, 'content' => $content]); // $message is `Message::class` and $content is an `array`刀片锉刀<td>{{ $message->type }}</td><td>{{ $content['text'] }}</td>
打开App,查看更多内容
随时随地看视频慕课网APP