php - 获取数据作为响应,但是在通过 ajax 渲染视图后没有得到很少的数据
问题描述
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
视图正在使用view()->render()
函数通过 ajax 呈现。
解决方案
API 资源并非真正设计为传递给视图,它们旨在用于 JSON 响应,在其中它们被序列化为 JSON。
如果将集合对象传递给视图,则不会执行任何序列化,因此它仍然是一个资源集合类。
可以通过调用自己序列化成数组$car_premium_details->toArray(null)
(第一个参数应该是请求对象,但是可以传null)。
然后你必须将它作为一个数组来访问,而不是一个对象。
但是,除非您有真正的理由,否则我仍然不建议您尝试在您的视图中使用 API 资源。在大多数情况下,传递原始模型就足够了,而且更容易操作。
推荐阅读
- python - 将一列与其他两列进行比较,并将结果分配回 DataFrame
- html - 如何制作半页引导轮播?
- java - 正确使用 Java 注解根据导入的外部库类生成类
- r - 在 R 中应用自动化将数字行更改为日期
- javascript - 如何为 replaceWith() 设置事件监听器?
- python - 使用 lambda 在列表中查找最小值
- javascript - 将 javascript 循环导出到 CSV
- css - 尝试使用 CSS 隐藏 div
- java - spring,prototype和singleton有性能上的区别吗?
- r - R 包 'ps' 安装失败,因为在安装的最后一步拒绝了 mv 的权限