【问题标题】:How to use relationship data outside of relationship field in Laravel Nova?如何在 Laravel Nova 的关系字段之外使用关系数据?
【发布时间】:2020-01-19 17:11:32
【问题描述】:

我试图弄清楚如何用 Laravel Nova 做一些看似简单的事情,但我无法弄清楚。

我想做的是在文本字段中引用关系数据。我在 Nova 中看到,并了解如何通过 HasOne, HasMany ... 外观引用关系。但我想做的是得到这样的关系数据:

Text::make('State', $this->state->name) 

这不起作用,我在尝试调试时注意到的是 Nova 资源中的每个函数似乎都运行了多次。这是我添加的日志记录:

public function fields(Request $request) {
    logger($this->state->name)
}

当我这样做时,有 3 个日志记录实例,前 2 个包含状态名称,第三个不包含。我认为这可能与它无法正常工作有关,但不知道是什么原因造成的。

提前感谢您的帮助!

【问题讨论】:

    标签: laravel laravel-nova laravel-6


    【解决方案1】:

    有一种简单的方法可以将关系数据放入 Nova Text 字段中,只需使用闭包即可:

    Text::make('State', function() { return $this->state->name; })

    至于对fields 函数的多次调用,答案与以下问题有关:您的 Nova 文件夹中是否还有与我们正在讨论的Resource 相关的另一个Resource 如果是这样,这就是为什么——它需要调用fields 才能正确显示它。您可以检查以下查询字符串参数以获得更多信息:viaResourceviaResourceIdviaRelationship

    【讨论】:

    • 谢谢@udog - 这就是我正在寻找的答案!
    • @udog 谢谢你的回答对我也很有用。仅仅是因为 viaResourceviaResourceIdviaRelationship 没有正确记录在 Nova 文档中,并且仅在操作下简要提及。它们有多种用途,但如果没有任何真正的文档,很难理解。
    猜你喜欢
    • 2020-04-17
    • 2019-06-18
    • 1970-01-01
    • 2019-02-02
    • 2019-05-04
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 2022-11-23
    相关资源
    最近更新 更多