我正在使用Laravel Nova分区来显示每个类别的项目数量。
public function calculate(Request $request) {
return $this->count($request, Item::class, 'category_id');
}
这可以正常工作,但是在屏幕上当然会显示category_id。
该模型的构建如下:
class Item extends Model
{
public function category()
{
return $this->belongsTo('App\Category');
}
}
和
class Category extends Model
{
public function item()
{
return $this->hasMany('App\Item');
}
}
此外,我在Nova类别资源中定义了以下内容:
public static $title = 'category_name';
如何显示类别名称而不是类别ID?
答案 0 :(得分:2)
通常,将分区指标划分为的列值 组将是简单的键,而不是“人类 友好”。或者,如果您要显示按“ 列为布尔值,Nova会将您的组标签显示为“ 0” 和“ 1”。基于这个原因,Nova允许您提供封闭 将标签设置为更易读的格式:
/**
* Calculate the value of the metric.
*
* @param \Illuminate\Http\Request $request
* @return mixed
*/
public function calculate(Request $request)
{
return $this->count($request, User::class, 'stripe_plan')
->label(function ($value) {
switch ($value) {
case null:
return 'None';
default:
return ucfirst($value);
}
});
}
因此,在您的情况下,将是这样的:
/**
* Calculate the value of the metric.
*
* @param \Illuminate\Http\Request $request
* @return mixed
*/
public function calculate(Request $request)
{
return $this->count($request, Item::class, 'category_id');
->label(function ($value) {
// Get your category name here
// For example: return \App\Category::find($value)->name;
});
}