在 laravel Nova 中热显示名称而不是 id

hot to display name instead of id in laravel Nova

我们只想从 nova 仪表板停止 algolia,但我们想将 algolia 添加到网站和 api, 当我们将 Laravel\Scout\Searchable 添加到用户模型时,它适用于 nova 仪表板和网站 & API

另一个问题: 我想在这里显示名称而不是 ID 但没有用,我该怎么办?

BelongsTo::make('Student', 'student', StudentDetail::class)
                ->nullable()
                ->sortable()
                ->searchable(),

查看 Laravel\Nova\Resource class,我发现 usesScout 方法确定是否应使用 Scout 进行搜索。所以在我的 Nova 资源中,我只是重写了这个方法:

public static function usesScout()
{
    return false;
}

根据其他答案,如果您想禁用 scout,请尝试:

public static function usesScout()
{
    return false;
}

要显示 ID 以外的内容来识别 Nova 资源,您可以

  1. 这是最简单的解决方案。为“$title”属性 分配您要使用的 eloquent 属性 的名称。

例如,这会将 'ID' 显示为资源的标题:

public static $title = 'id';

而这会将 'Name' 显示为标题:

namespace App\Nova;
    
class StudentDetail extends Resource 
{
    public static $model = \App\Models\StudentDetail::class;

    public static $title = 'name';
        
    ...
  1. 如果您需要计算资源的标题,请更改 public 'title()' 函数。

例如,您想按姓氏然后是名字列出 'App\Model\User' class。因此“John Smith”显示为“Smith, John”:

namespace App\Nova;

...

class User extends Resource
{
    public static $model = \App\Models\User::class;
    
    public function title() {
        return $this->last_name . ', ' . $this->first_name
    }