显示细丝资源的关系数据

我已经开始使用 Filament PHP 创建基于 Laravel 的 Intranet 应用程序,但偶然发现了一个我无法使用官方文档回答自己的问题:

在资源的视图页面中显示关系数据的最简单方法是什么?

我有两个资源 ClientResource 和 ProjectResource 导致两个 Laravel 关系:

客户端型号:

public function projects(): HasMany
{
   return $this->hasMany(Project::class);
}

项目型号:

public function client(): BelongsTo
{
   return $this->belongsTo(Client::class);
}

我在项目资源中实现了一个 BelongsToSelect 字段来分配客户:

ComponentsBelongsToSelect::make('client')
   ->relationship('client', 'first_name')
   ->required(),

到目前为止一切正常,但是(显然)我在项目的视图页面上看到的只是显示客户名字的禁用选择字段。我想列出所有相关字段。我是否错过了文档中的重要内容,或者解决此问题的最佳方法是什么?

我查看了 RelationManager,但似乎只有一个 belongsToMany 关系(没有 belongsTo)。

stack overflow Showing relational data of a Filament resource
原文答案

答案:

作者头像

这也可以通过指定如下关系使用选择组件来完成:

    Select::make('client_id')
      ->relationship('client', 'first_name');

您还可以访问 eloquent 查询构建器实例,如下所示:

    Select::make('client_id')
      ->relationship('client', 'first_name', 
        fn (Builder $query) => $query->where('status', 'actif'))
    );

文档参考: https://filamentphp.com/docs/2.x/forms/fields#populating-automatically-from-a-relationship