【问题标题】:Laravel + Vue return data with more than one relationLaravel + Vue 返回具有多个关系的数据
【发布时间】: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


【解决方案1】:

如果要获取主题关系属于主题的数据,那么,

试试这个

Exercise::with('topic.subject')->get();

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 2020-03-04
    • 1970-01-01
    • 2020-07-31
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多