返回值中的错误必须是 Illuminate\Database\Eloquent\Collection 类型

问题描述 投票:0回答:1

我目前正在学习Laravel Filament,但是突然出现这样的错误。之前我修复了错误,但结果并不如预期。

这是错误结果及其代码的屏幕截图。

错误灯丝

 public static function form(Form $form): Form
    {
        return $form
            ->schema([
                Forms\Components\Section::make('Relationships')
                    ->schema([
                        Forms\Components\Select::make('country_id')
                            ->relationship(name: 'country', titleAttribute: 'name')
                            ->searchable()
                            ->preload()
                            ->live()
                            ->required(),
                        Forms\Components\Select::make('state_id')
                            ->options(fn (Get $get): Collection => State::query()
                                ->where('country_id', $get('country_id'))
                                ->get()
                                ->pluck('name', 'id'))
                            ->searchable()
                            ->preload()
                            ->live()
                            ->required(),
                        Forms\Components\Select::make('city_id')
                            ->options(fn (Get $get): Collection => City::query()
                                ->where('state_id', $get('state_id'))
                                ->get()
                                ->pluck('name', 'id'))
                            ->searchable()
                            ->preload()
                            ->required(),

我想知道我的代码问题的根本原因是什么。

php laravel laravel-blade laravel-filament laragon
1个回答
0
投票

错误非常明显:没有返回预期的类型。例如,从您的代码中,请考虑以下内容:

->options(fn (Get $get): Collection => State::query()
    ->where('country_id', $get('country_id'))
    ->get()
    ->pluck('name', 'id'))

在此上下文中,

Collection
指的是
Illuminate\Database\Eloquent\Collection
还是
Illuminate\Support\Collection

请记住,

pluck()
会将您的数据转换为
Illuminate\Support\Collection

您可以相应地调整您的退货类型。

© www.soinside.com 2019 - 2024. All rights reserved.