如何在laravel中获取jsonencode数据?

时间:2019-08-19 07:34:30

标签: javascript jquery json laravel

控制器

public function rooms_detail(Request $request)
{   
    $data['room_id']          = $request->id;
    $data['result']           = Rooms::find($request->id);

    echo $data['result'];

    return view('rooms.rooms_detail', $data);
}

view:rooms / rooms_detail

@foreach($result as $row)
    <div class="hero-text">{{ $row->name }}</div>
@endforeach

在这段代码中,我有一个控制器功能,可以在Rooms模型中运行查询,该查询可以正常工作,并且我的数据看起来像{"id":16,"user_id":10088,"name":"5 \u2b50 RESORT RETREAT W\/HEATED POOL SPRAWLING GROUNDS"}。但是我无法在我的视图文件中获取此数据。那么,我该怎么办呢?请帮助我。

谢谢

5 个答案:

答案 0 :(得分:1)

在Laravel文档中,您还可以使用find或first检索单个记录:https://laravel.com/docs/5.8/eloquent#retrieving-single-models

所以

$data['result']           = Rooms::find($request->id);

返回单个模型而不是模型集合。 您应该在view:rooms / rooms_detail

中更改代码
//@foreach($result as $row) => remove foreach
     <div class="hero-text">{{ $result->name }}</div>
//@endforeach

答案 1 :(得分:0)

我认为您不需要循环播放。因为您正在使用find函数。只需直接在视图上调用

<div class="hero-text">{{ $result->name }}</div>

find函数会在找到内容时为您提供Model或返回null

或者如果您想更改您的雄辩查询。

$data['result'] = Rooms::where('id', $request->id)->get();

答案 2 :(得分:0)

我会在您的控制器中返回这样的数据:

return response()->view('rooms.rooms_detail', [
   $result => $data['result'],
   $roomID => $data['room_id']
]);

这是返回响应https://laravel.com/docs/5.8/responses

的推荐正确方法

然后在您的刀片中

<div class="hero-text">{{ $result->name }}</div>

答案 3 :(得分:0)

您不需要将集合转换为数组,因为您使用的是eloquents find方法,该方法将返回collection而不是array

您可以简单地使用以下代码

public function rooms_detail(Request $request)
{   
     $room_id         = $request->id;
     $data           = Rooms::find($request->id);

    echo $data['result'];

    return view('rooms.rooms_detail', $data);
}

然后在您看来

<div class="hero-text">{{ $data->name }}</div>

答案 4 :(得分:0)

public function rooms_detail(Request $request)
{   
    $room           = Rooms::find($request->id);
    return view('rooms.rooms_detail')->with('room',$room);
}

在“查看数据”页面

 
    <div class="hero-text">{{ $room->name }}</div>

您仅获取一个数据,因此不需要循环