如何从 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),
寻找针对这种情况的建议。谢谢!
要在数据透视表中包含 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),