【发布时间】:2019-07-21 22:14:44
【问题描述】:
我有一个名为Exercise 的模型,它属于Topic,而一个Topic 属于一个Subject。
有
Exercise::with('topic')->get()
我可以在 Vue 中访问当前练习主题的属性。我该怎么做才能从我的练习所属主题的主题中返回数据?
如果我只能使用刀片模板,我会调用:
{{$exercise->topic->subject->name}}
但问题是我将所有内容都作为 json 传递,以便使用 vue 处理数据表中的数据。
一种解决方案是将Subject::all 也传递给我的视图,并在练习中使用subject_id>主题和vue:
@{{subjects[exercise.topic.subject_id].name}}
我正在寻找比这更好、更清洁的解决方案。是否有 Laravel 方法,例如具有多个关系的多个 with?比如:
Exercise::with('topic')->and('topic')->with('subject')->get()
谢谢!
【问题讨论】:
-
看看github.com/spatie/laravel-fractal - 看来您需要更强大的 API 解决方案。
-
@Trent 我正在阅读它...你真的认为有必要吗?
-
这由你来决定,像 fractal 这样的序列化器将允许你定义非常轻量级的序列化对象(例如练习),然后使用 ->includes 来获取你想要的所有其他数据,仅当你需要它。注意:分形会增加一些处理开销
-
@Trent 但是我需要为每个复杂的数据结构创建转换器?
-
@Trent 没有基于 laravel 的解决方案吗?因为我对那个项目很着急,所以我不想创建越来越多的数据处理层......但我也不想做丑陋的解决方案,就像我在发布!
标签: json laravel vue.js model-view-controller