Получение данных в ответ, но после рендеринга представления через ajax, не получая немного данных - PullRequest
0 голосов
/ 12 февраля 2019
Laravel: 5.7.25
PHP 7.2.10

Пример данных в ответе

{,…}
data: [{id: 1,…}, {id: 2,…}, {id: 3,…}, {id: 4,…}, {id: 5,…}, {id: 6,…}, {id: 7,…}, {id: 8,…}, {id: 9,…},…]
0: {id: 1,…}
carModelBodyType: {id: 1, name: "Sedan", status: 1, created_at: "2019-01-03 13:25:46", updated_at: "2019-01-03 13:25:46"}
id: 1
insuranceProvider: {id: 1, name: "The Oriental Insurance Company Ltd", has_logo: null, recommended_partner: 1,…}
base_commission_amount: 0
base_commission_percentage: 10
bonus_amount: 0
bonus_percentage: 2
has_logo: null
id: 1
name: "The Oriental Insurance Company Ltd"
planBenifits: [,…]
0: {id: 83, insurance_providers_id: 1, year: 2019, effective_date: "2019-01-27 00:00:00", plan_type: 0,…}
1: {id: 84, insurance_providers_id: 1, year: 2019, effective_date: "2019-01-27 00:00:00", plan_type: 0,…}
2: {id: 85, insurance_providers_id: 1, year: 2019, effective_date: "2019-01-27 00:00:00", plan_type: 0,…}

В представлении

@foreach ( $car_premium_details as $car_premium_detail )
    {{ var_dump($car_premium_detail->insuranceProvider->name) }} //Getting correctly
{{ var_dump($car_premium_detail->insuranceProvider->planBenifits) }}  //Getting null
@endforeach

Представление обрабатывается с помощью ajax с использованием функции view()->render().

Снимок экранаответ enter image description here

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Что я сделал, так это то, что я удалил ресурс, создал несколько связей и теперь использую эту связь для получения данных,

что-то вроде $car_premium_detail->insuranceProvider->planBenifits

теперь CarPremium - InsuranceProvider отношение, InsuranceProvider - PlanBenifit отношение и InsuranceProvider - BenefitMaster отношения.

Я использовал все отношения в ресурсе и данные в представлениях, теперь я использую всеотношения в представлениях и только отправка CarPremium красноречивой коллекции для просмотра.если есть какой-нибудь способ получше, пожалуйста, дайте мне знать.

Да, мне бы хотелось, чтобы уже были отформатированные данные вместо того, что я делаю.

0 голосов
/ 12 февраля 2019

Ресурсы API на самом деле не предназначены для передачи в представление, они предназначены для использования в ответах JSON, где они сериализуются в JSON.

Если вы передадите объект коллекции в представление, выиграетне было выполнено никакой сериализации, поэтому это все равно будет класс сбора ресурсов.

Вы можете сериализовать его в массив самостоятельно, вызвав $car_premium_details->toArray(null) (первый параметр должен быть объектом запроса, новы можете передать значение null).

Тогда вам придется обращаться к нему как к массиву, а не как к объекту.

Однако я все равно не рекомендовал бы использовать ресурсы API в вашем представлении.если у вас нет реальной причины для этого.В большинстве случаев, передача оригинальной модели должна быть достаточной и намного проще для манипулирования.

...