修改从模型到视图的数据库输出


Modification of database outputs from model and passing to view laravel 5.2

我的RESTapi正在输出以下json字符串

{"chat":[{"id":100,"chat_id":38,"created_at":"2016-09-07 08:48:17","updated_at":"2016-09-07 08:48:17","messageContent":"Hi there","sender":"client"},{"id":101,"chat_id":38,"created_at":"2016-09-07 08:48:29","updated_at":"2016-09-07 08:48:29","messageContent":"hello sir","sender":"admin"},{"id":102,"chat_id":38,"created_at":"2016-09-07 09:14:24","updated_at":"2016-09-07 09:14:24","messageContent":"test","sender":"client"},{"id":103,"chat_id":38,"created_at":"2016-09-07 09:16:06","updated_at":"2016-09-07 09:16:06","messageContent":"test","sender":"client"}],"currentChatId":38,"senderName":"Client name"}

注意sender列。这些都来自db。现在我正在编写一个算法来检查这个,并找到发送者名称到视图,而不仅仅是发送者类型。

我在这方面有问题,你有什么建议吗?

这是控制器函数

    public function getAllChat(Request $request)
{
    // $chatList = chatMessage::where();
    $clientId = $request->session()->get('userId');
    //current chat id7
    $currentChatId = $request->session()->get('currentChatId');
    //find who sent it admin/client
    $chatMessageList = chatMessage::where('chat_id',$currentChatId)->get();
    //sender
    foreach($chatMessageList as $cht)
    {
        //find out sender
        $sender = $cht->sender;
        if($sender=="client")
        {
            $chtP = chatParticipants::find($currentChatId)->first();
            $clientId = $chtP->client_id;
            //find client name
            $client = Client::find($clientId);
            $ch->sender = $client->name;

        }
        elseif($sender=="admin")
        {
            $chtP = chatParticipants::find($currentChatId)->first();
            $adminId = $chtP->admin_id;
            //find client name
            $admin = Admin::find($clientId);
            $name = $admin->name;
            $ch->sender = $admin->name;
        }
    }
    return response()->json([
        "chat"=> $chatMessageList,
        "currentChatId" => $currentChatId,
        "senderName"=>$name
        ]);
}

错误:从空值创建默认对象

您没有在任何地方定义$ch变量-我猜您想使用$cht变量。

代替

$ch->sender = $client->name;

$cht->sender = $client->name;

$ch->sender = $admin->name;

$cht->sender = $admin->name;

这是一个打字错误。cht ->发送方=美元名称;

代替ch ->发送方=美元名称;