在 Laravel Nova 中,relatableQuery
方法用于自定义关联查询,以便在关联字段的选择器中显示特定的数据。如果你想在编辑表单视图中排除 relatableQuery
,可以通过以下几种方式实现:
如果你希望在某些情况下完全禁用 relatableQuery
,可能是因为:
relatableQuery
你可以在控制器中根据条件决定是否应用 relatableQuery
。
use Laravel\Nova\Http\Controllers\ResourceController;
class YourResourceController extends ResourceController
{
public function relatableQuery(NovaRequest $request, $query)
{
// 根据请求参数或其他条件决定是否应用自定义查询
if ($request->input('exclude_relatable')) {
return $query;
}
return parent::relatableQuery($request, $query);
}
}
fields
方法在资源类中重写 fields
方法,直接定义关联字段而不使用 relatableQuery
。
use Laravel\Nova\Fields\BelongsTo;
class YourResource extends Resource
{
public function fields(Request $request)
{
return [
BelongsTo::make('RelatedModel')
->rules('required')
// 不使用 relatableQuery
];
}
}
假设你有一个 Post
资源和一个 User
资源,通常你会希望在编辑 Post
时能够选择关联的 User
。
// PostResource.php
public function fields(Request $request)
{
return [
ID::make()->sortable(),
Text::make('Title')->sortable(),
BelongsTo::make('User')
->rules('required')
->searchable()
->displayUsingLabels(),
];
}
如果你想在特定情况下排除 relatableQuery
,可以这样做:
// PostResource.php
public function relatableQuery(NovaRequest $request, $query)
{
if ($request->input('simple_mode')) {
return $query; // 直接返回原始查询
}
return $query->where('active', true); // 默认的自定义查询逻辑
}
通过这种方式,你可以灵活地控制何时应用自定义的关联查询,从而满足不同的业务需求。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云