Как получить доступ к вложенным объектам json без json_decoding коллекции

#laravel #laravel-blade

#laravel #laravel-blade

Вопрос:

У меня есть следующая структура данных:

 [
   {
      "id": 1,
      "customer_id": "11",
      "customer_name": "Vic",
      "cheque_withdraw": {
         "id": 2,
         "request_date", "2019-03-30"
      }
   }
]
  

Я получил эти данные из нескольких таблиц с помощью следующего кода;

 $paginator = Cheque::with(['chequeWithdraw' => function($query){
        $query->where('withdraw_status' , 'withdrawn');
    }])
    ->paginate(5);
  

Как мне получить доступ к вложенному объекту json request_date без необходимости преобразования моей коллекции в ассоциативный массив? Причина, по которой я не хочу преобразовывать коллекцию в ассоциативный массив, заключается в том, что у меня возникают проблемы с разбиением на страницы данных, которые были декодированы в json.
В настоящее время я пытаюсь получить доступ к request_date в моем блейд-файле таким образом;

 @foreach($paginator as $cheque)
   {{ $cheque->cheque_withdraw->request_date }}
@endforeach
  

Однако я получаю следующую ошибку;

 Trying to get property 'request_date' of non-object
  

Комментарии:

1. Если вы попытаетесь print_r($cheque); и die(); внутри вашего foreach, что вы получите?

2. @pr1nc3 Я получаю объекты двух моделей, которые я использовал. Модель проверки и модель ChequeWithdraw. Результат слишком длинный, иначе я бы вставил его сюда, чтобы вы могли взглянуть

3. Тогда не могли бы вы показать мне код, которым вы возвращаете данные в представление?

Ответ №1:

На самом деле у вас есть chequeWithdraw и нет cheque_withdraw

 @foreach($paginator as $cheque)
   {{ $cheque->chequeWithdraw->request_date  ?? 'NA'}}
@endforeach
  

Возможно, вы пытаетесь преобразовать коллекцию laravel в json или массив. преобразование laravel camel case в snake case . Итак, вы получали это для json, а не для шаблона laravel.

Комментарии:

1. Спасибо за ответ. Это работает замечательно. Пожалуйста, объясните мне, почему объектом является chequeWithdraw, а не cheque_withdraw, как в json?

2. @gerry: возможно, вы пытаетесь преобразовать коллекцию laravel в json или массив. преобразование laravel camel case в snake case . Итак, вы получали это для json, а не для шаблона laravel.