如何从json响应中获取数据数组排除Laravel中的标头

时间:2020-07-12 02:11:49

标签: json laravel

嗨,我创建了一个如下的Laravel小吸气器。

public function getYearListAttribute(){
    $presentyear = intval($this->created_at->format('Y'));
    $myarray[] = array(
        'present' => $presentyear, 
        'past1' => $presentyear-1,
        'past2' => $presentyear-2,
        'past3' => $presentyear-3
    ); 
    return response()->json($myarray); 
} 

我从刀片这样称呼它。

{{$mymodel->yearlist}}

但是我收到的响应是标题,而不是数组列表。

 HTTP/1.0 200 OK Cache-Control: no-cache, private Content-Type: application/json Date: Sun, 12 Jul 2020 02:05:44 GMT [{"present":2020,"past1":2019,"past2":2018,"past3":2017}]

非常感谢您提出任何建议或指导,谢谢。

2 个答案:

答案 0 :(得分:0)

您可以返回以下响应

return response()->json($myarray)->getContent()

它将仅返回数据

答案 1 :(得分:0)

我想不出您想从Model访问器返回完整的HTTP响应的任何情况。通常,模型不会启动请求/响应更改,因为这通常是通过Route> Controller(AJAX或其他方式)完成的。在这种情况下,您可以简单地返回变量:

public function getYearlistAttribute() {
  $presentYear = intval($this->created_at->format('Y'));

  $myArray[] = [
    'present' => $presentYear, 
    'past1' => $presentYear-1,
    'past2' => $presentYear-2,
    'past3' => $presentYear-3
  ]; 

  return $myArray;
}

{{ $myModel->yearlist }}的响应现在将只是您定义的数组,而不是HTTP响应。

编辑:但是您当然不能简单地做{{ $myModel->yearlist }},因为那是一个数组。您需要对其进行循环:

@foreach($myModel->yearlist as $key => $year)
  {{ "{$key} - {$year}" }} // `present - 2020`, `past1 - 2019`, etc...
@endforeach