我已经开始使用Filament PHP创建一个基于Laravel的内部网应用程序,但偶然发现了一个问题,我无法使用官方文档回答自己:
在资源的视图页中显示关系数据最简单的方法是什么?
我有两个资源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(),
到目前为止一切都很好,但是(显然)我在项目的视图页面上看到的是显示客户名字的禁用选择字段。我想把所有相关领域都列出来。我是否错过了文档中的关键内容,或者解决这个问题的最佳方法是什么?
我已经看了一下关系管理器,但似乎只有一个belongsToMany关系(nobelongsTo)) .
在select组件中也可以这样指定关系:
Select::make('client_id')
->relationship('client', 'first_name');
您还可以访问雄辩的查询生成器实例,如下所示:
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