Как получить массив данных из json ответа, исключить заголовок в Laravel - PullRequest
0 голосов
/ 12 июля 2020

Привет, я создаю небольшой 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}}

Но я получил ответ с заголовком вместо только массива list.

 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 голосов
/ 12 июля 2020

Я не могу представить себе ситуацию, когда вы захотели бы вернуть полный HTTP-ответ от метода доступа Model. Как правило, модели не инициируют изменения запроса / ответа, поскольку это обычно делается через 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 }}, поскольку это массив. Вам понадобится l oop it:

@foreach($myModel->yearlist as $key => $year)
  {{ "{$key} - {$year}" }} // `present - 2020`, `past1 - 2019`, etc...
@endforeach
0 голосов
/ 12 июля 2020

вы можете вернуть ответ, как показано ниже

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

он вернет только данные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...