Laravel灯丝.带有选项和默认值



我有一段我认为可以改进的代码。

在form()方法中的DomainResource中,我有一个循环关系。(这是我认为唯一可行的方法,因为我不喜欢目前在灯丝中有两个守卫的想法)

模型与User建立了关系,但是有不符合条件的用户。

删除//->relationship('user','name')选项

代码为我工作,但有能力创建更多模型的登录用户可以在字段

中编写(即使它不工作)
$user = auth()->user();
return $form
->Select::make('user_id')
//->relationship('user','name')
->label('Administrador')
->options(function () use ($user){
if ($user->getRoleNames()->first() === 'super-admin') {
return  User::role('owner')->pluck('name', 'id');
}
return User::where('id', $user->id)->pluck('name', 'id');
})
->searchable()

任何想法?

过了一段时间,我把它重写得更好一些。

Select::make('user_id')
//->relationship('user','name')
->label('Administrador')
->options(function () {
if (auth()->user()->getRoleNames()->first() === 'super-admin')
{
return  User::role('owner')->pluck('name', 'id');
}
return collect([
['name' => auth()->user()->name, 'id' => auth()->user()->id]
])->pluck('name', 'id');
})
->required()
->searchable()

同样,在资源类

public static function getEloquentQuery(): Builder
{
if (auth()->user()->hasAnyRole(['super-admin'])) {
return parent::getEloquentQuery()
->withoutGlobalScopes([
SoftDeletingScope::class,
]);
} else {
return parent::getEloquentQuery()
->withoutGlobalScopes([
SoftDeletingScope::class,
])
->whereBelongsTo(auth()->user());
}
}

它可以工作,但是当然,关系的组合列表显示为空,而不是用登录用户的值填充,并且是活动的。别这样,这不太合适。

尝试用这种方式添加默认值。

->default(auth()->user()->hasRole('super-admin')?null:auth()->user()->id)

最新更新