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

dvtswwa3  于 2023-09-29  发布在  PHP
关注(0)|答案(1)|浏览(83)

我想让我的文本和自定义字段可排序。但我还没找到一页能解释这是怎么回事的。
或者这些:

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
亲切的问候和感谢!

1cosmwyk

1cosmwyk1#

您可以在资源中重新定义方法indexQuery(Laravel Nova模型),并加载您希望在索引页中进行排序的字段

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 haveMany ProductType))
在Laravel Nova 4中,你可以使用Badge Field来显示状态laravel nova badge field文档

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

这些徽章看起来很漂亮

相关问题