如何在 Laravel Nova 中使用关系字段之外的关系数据?

How to use relationship data outside of relationship field in Laravel Nova?

我想弄清楚如何用 Laravel Nova 做一些看似简单的事情,但我想不出来。

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

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

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

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

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

提前感谢您的帮助!

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

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

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