灯丝检查列表框 - 额外数据透视表数据

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

如何从 Amenity 模型返回 amenity_type_id,因为 CheckBoxList 默认使用 pluck() 方法,并且我不确定如何获取字段 id、name 以及 amenity_type_id,以便将其保存到数据透视表设施_财产。

amenity_property 表包含: amenity_id、property_id、amenity_type_id

$record->amenity_type_id 值始终为 null,因为它在集合中不可用。

$options = Amenity::all()->pluck('name', 'id');

CheckboxList::make('amenities')
    ->label('Amenities')
    ->columnSpanFull()
    ->relationship('amenities', 'name')
    ->options($options)
    ->pivotData(function ($record) {
        return [
            'amenity_type_id' => $record->amenity_type_id,
        ];
    })
    ->columns(3),

寻找针对这种情况的建议。谢谢!

pivot-table laravel-filament filamentphp
1个回答
0
投票

要在数据透视表中包含 amenity_type_id,您需要调整准备选项和处理数据透视表数据的方式

首先不要使用 pluck,而是使用 mapWithKeys

$options = Amenity::all()->mapWithKeys(function ($item) {
    return [$item->id => $item->name];
})
 

然后配置您的数据透视表

CheckboxList::make('amenities')
    ->label('Amenities')
    ->columnSpanFull()
    ->relationship('amenities', 'name', 'amenities.pivot.amenity_type_id')
    ->options($options)
        ->pivotData(function ($item, $state) {
            return ['amenity_type_id' => $item->amenity_type_id];
         })
     ->columns(3),
© www.soinside.com 2019 - 2024. All rights reserved.