conversationDesc部分有2条数据,但blade部分只返回一条数据,为什么?

There are 2 data in the conversationDesc section, but only one data is returned in the blade section, why?

conversationDesc部分有2条数据,但blade部分只返回一条数据;为什么?这里同样的数据返回了两次;为什么?消息:“abcdefgh”来了两次,但我想看到消息:“1abcde”和消息:“abcdefgh”。

MyController.php

public function index(Request $request, $conversation_id)
{
    $c2cmessages = C2CMessage::where('conversation_id', $conversation_id)->get();
    foreach ($c2cmessages as $c2cmessage) {
        $MessageContent = $c2cmessage["MsgBody"][0]["MsgContent"];
        $decodedData = json_decode($MessageContent["Data"], true);
        $conversationDesc = $decodedData["conversationDesc"];
    }
    
    return view('admin.c2cmessages.index', 
        compact('c2cmessages', 'conversationDesc'));
}

dump($conversationDesc);

这两个数据正在返回“1abcde”和“abcdefgh”。

index.blade.php

<ul class="contacts-block profile-box list-unstyled">
    @foreach($c2cmessages as $c2cmessage)
    <li class="contacts-block__contact-container">
        <div class="contacts-block__contact-content">
            <div class="contacts-block__contact-content__time">
                <b>Message:</b>
                <span class="contacts-block__contact-content__time__text">
                    {{$conversationDesc}}
                </span>
            </div>
        </div>
    </li>
    @endforeach
</ul>

在你的循环中,你每次都会覆盖 $conversationDesc 的值,所以它只会有最后一个值。

由于您将 $c2cmessages 数组传递到视图中,因此没有理由传递单独的 $conversationDesc 值。

控制器中需要循环的唯一原因是解析和转换 JSON 对象。因为 Eloquent get() 函数 returns 是一个 Collection 对象,你可以像这样使用 map() 方法以获得更清晰的代码:

public function index(Request $request, $conversation_id)
{
    $c2cmessages = C2CMessage::where('conversation_id', $conversation_id)
        ->get()
        ->map(function ($c2cmessage) {
            $messageContent = $c2cmessage["MsgBody"][0]["MsgContent"];
            $decodedData = json_decode($messageContent["Data"], true);
            return [
                'conversationDesc' => $decodedData["conversationDesc"],
                // add any other fields you need here too
            ];
        });
    
    return view('admin.c2cmessages.index', compact('c2cmessages'));
}

您的视图应如下所示:

<ul class="contacts-block profile-box list-unstyled">
    @foreach($c2cmessages as $c2cmessage)
    <li class="contacts-block__contact-container">
        <div class="contacts-block__contact-content">
            <div class="contacts-block__contact-content__time">
                <b>Message:</b>
                <span class="contacts-block__contact-content__time__text">
                    {{$c2cmessage['conversationDesc']}}
                </span>
            </div>
        </div>
    </li>
    @endforeach
</ul>

编辑问题前的旧答案

dd() 表示 dump()die() - 首先打印值,然后终止脚本执行。

如果要查看多个值以进行调试,请使用 dump()