以响应方式获取数据,但是通过ajax渲染视图后,数据很少

时间:2019-02-12 12:47:58

标签: php laravel eloquent laravel-views laravel-eloquent-resource

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渲染视图。

回复屏幕截图 enter image description here

2 个答案:

答案 0 :(得分:0)

API资源并非真正设计为传递给视图,而是设计为在JSON响应中使用,在那里将它们序列化为JSON。

如果将集合对象传递给视图,将不会执行任何序列化,因此它仍然是资源集合类。

您可以通过调用$car_premium_details->toArray(null)自己将其序列化为数组(第一个参数应该是请求对象,但是可以传递null)。

然后,您必须以数组而不是对象的形式访问它。

但是,我仍然不建议尝试在您的视图中使用API​​资源,除非您有真正的理由这样做。在大多数情况下,通过原始模型应该足够并且更容易操纵。

答案 1 :(得分:0)

我要做的是删除资源,创建了更多关系,并使用该关系立即获取数据,

类似$car_premium_detail->insuranceProvider->planBenifits

现在具有CarPremium-InsuranceProvider关系,InsuranceProvider-PlanBenifit关系和InsuranceProvider-BenefitMaster关系。

我正在做的事情是使用资源中的所有关系并在视图中使用数据,现在我在视图中使用所有关系,仅发送CarPremium雄辩的集合进行查看。如果有更好的方法,请告诉我。

是的,我希望查看的是已经格式化的数据,而不是我正在做的事情。