显示 Filament 资源的关系数据

Yam*_*ami 5 php frameworks laravel

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

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

我有两个资源 ClientResource 和 ProjectResource,这会产生两个 Laravel 关系:

客户端型号:

public function projects(): HasMany
{
   return $this->hasMany(Project::class);
}
Run Code Online (Sandbox Code Playgroud)

项目型号:

public function client(): BelongsTo
{
   return $this->belongsTo(Client::class);
}
Run Code Online (Sandbox Code Playgroud)

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

Components\BelongsToSelect::make('client')
   ->relationship('client', 'first_name')
   ->required(),
Run Code Online (Sandbox Code Playgroud)

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

我查看了 RelationManager 但似乎只有一个ownToMany关系(没有ownTo)。

小智 4

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

    Select::make('client_id')
      ->relationship('client', 'first_name');
Run Code Online (Sandbox Code Playgroud)

您还可以访问雄辩的查询构建器实例来使用,如下所示:

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

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