为了账号安全,请及时绑定邮箱和手机立即绑定

在 JSON 解码后在 laravel 中分解 PHP

在 JSON 解码后在 laravel 中分解 PHP

PHP
MMTTMM 2023-03-11 15:36:57
我想展开解码后的 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" } } } }我想展开这个,这样我就可以将它们中的每一个提取到我表中的不同列中
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

所以最好在这种情况下使用访问器。您可以在此处找到有关它们如何工作的文档https://laravel.com/docs/7.x/eloquent-mutators#defining-an-accessor


在我们的消息模型中


namespace App;


use Illuminate\Database\Eloquent\Model;


class Message extends Model

{


    public function getContentAttribute($value)

    {

        return json_decode($value);

    }

}

在你的控制器中


 public function index($id)

 {

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

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

 }

您的看法


<p>{{property_exists($message->content, 'text') ? $message->content->text:property_exists($message->content, 'log') ?  $message->content->log :property_exists($message->content, 'data')? $message->content->data: ""}}</p>



查看完整回答
反对 回复 2023-03-11
?
Helenr

TA贡献1780条经验 获得超3个赞

在你的控制器中


$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>


查看完整回答
反对 回复 2023-03-11
  • 2 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信