Laravel Livewire-选择后输入数据丢失

Laravel Livewire-选择后输入数据丢失,laravel,laravel-livewire,selectinput,Laravel,Laravel Livewire,Selectinput,我有项目(id、代码、名称和价格)、仓库(id和名称)和库存(项目id、仓库id、库存)模型,其中库存模型有项目id和仓库id关系键。我正在尝试使用livewire挂载方法从库存模型中获取项目 public $items, $selected_id; public function mount() { $this->items = Stock::select('item_id', 'warehouse_id')->groupBy('item_id', 'warehouse_i

我有项目(id、代码、名称和价格)、仓库(id和名称)和库存(项目id、仓库id、库存)模型,其中库存模型有项目id和仓库id关系键。我正在尝试使用livewire挂载方法从库存模型中获取项目

public $items, $selected_id;

public function mount()
{
   $this->items = Stock::select('item_id', 'warehouse_id')->groupBy('item_id', 'warehouse_id')->get();
}

我在livewire组件的选择输入中使用这些项

<select wire:model='selected_id'>

   @foreach($items as $item)
       <option value='{{$item->item->id}}'>{{$item->item->code}} - {{$item->item->name}} </option>
   @endforech

</select>


@foreach($items作为$item)
{{$item->item->code}-{{$item->item->name}
@endforech
这在初始加载时工作得非常好。但当我从items select input中选择一个项目时,所有项目都将丢失,并且在选项中获得空数组

我不知道这个代码中有什么错误。请帮我解决这个问题

简短回答 您应该只对前端可以修改的属性使用公共可访问属性。将
$selected\u id
保留为属性,但将
$items
属性更改为传递给
渲染
方法中的视图的变量或计算属性

public$selected\u id;
公共函数getItemsProperty()
{
退货库存::选择('item_id','warehouse_id')->groupBy('item_id','warehouse_id')->get();
}
公共职能
{
返回视图('some-view'[
'items'=>this->items,
])
}
解释 免责声明:我还没有用调试器验证这一点,但这是我最好的猜测

Livewire将公共属性序列化为可以发送到前端的格式。这就是为什么您仅限于原语(
string
int
array
,等等)和一些类(
Model
Collection
)。Livewire将引擎盖下的
集合
模型
序列化为某种格式,以便它可以在下一次渲染中再次执行查询,防止在后续请求中出现过时的
模型

我认为这不能正常工作,因为您在查询
$items
属性时使用了
groupBy