【问题标题】:hot to display name instead of id in laravel Nova在 laravel Nova 中显示名称而不是 id
【发布时间】:2021-10-13 13:23:59
【问题描述】:

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

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

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

【问题讨论】:

标签: laravel algolia anova


【解决方案1】:

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

public static function usesScout()
{
    return false;
}

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

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

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

public static $title = 'id';

而这会将“名称”显示为标题:

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

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

例如,您希望按姓氏和名字列出“App\Model\User”类。因此“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
    }

【讨论】:

  • 我需要显示用户表中的用户名而不是 StudentDetail,StudentDetail 有 user_id 将 User.php 连接到 StudentDetail.php .. 我该怎么做?
  • 除了在 /App/Nova/Users 类中放置代码的方法完全相同:public static $title = 'name';
【解决方案2】:

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

public static function usesScout()
{
    return false;
}

【讨论】:

    猜你喜欢
    • 2021-06-23
    • 2021-08-26
    • 2021-12-27
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    相关资源
    最近更新 更多