使用 Laravel Nova Indicator Field 使文本和自定义字段可排序?

问题描述 投票:0回答:1

我想让我的文本和自定义字段可排序。但我还没有找到一页可以解释这是如何工作的。

这些:

Text::make('Type', function () {
    return $this->productType->name;
})
    ->sortable(),

或者这是有效的:

Text::make('Type', function () {
    return $this->productType->name;
})
    ->sortable(function () {
        return $this->productType->name;
    }),

你们知道如何使这些文本字段可排序吗? 另外,是否可以使自定义字段像这样可排序?

Indicator::make('Status', function() {
    return $this->postStatus->status;
}),

这是来自这个包:https://github.com/inspheric/nova-indicator-field

亲切的问候和感谢!

php laravel sorting laravel-nova
1个回答
0
投票

您可以在资源(Laravel Nova 模型)中重新定义方法

indexQuery
并加载您想要在索引页面中进行排序的字段

public static function indexQuery(NovaRequest $request, $query)
{
    return $query->addSelect([
        'name' => ProductType::select('name')
            ->whereColumn('product_id', 'products.id')
            ->limit(1),
    ]);
}

->whereColumn('product_id', 'products.id')
,语句更改取决于主要实体(在本例中 Product hasMany ProductType))

在 Laravel Nova 4 中,您可以使用徽章字段来显示状态laravel nova 徽章字段文档

Fields\Badge::make(__('Status'), 'status')
   ->textAlign('left')
   ->labels([
     'closed' => 'Closed',
     'canceled' => 'Canceled',
   ])
   ->map([
     'closed' => 'success',
     'canceled' => 'danger',
   ])
   ->withIcons()
   ->sortable(),

这个徽章看起来非常漂亮

© www.soinside.com 2019 - 2024. All rights reserved.