你好 friend 我需要帮助......我有一个多选,它保留了用户销售的几种类型的产品(这是多对多的关系)并且我制作了一个数据透视表......所以我需要的是当我更新数据时,它会显示我选择多选的相同数据
这是我的 Controller ,带有对数据透视表的查询
public function edit($id)
{
$usuarios = User::find($id);
$categorias = CategoriaComercial::all();
$productos = TipoProducto::all();
$pivot = ProductosUsers::where('user_id',$id)->get();
$roles = Role::whereIn("id",[2,3])->get();
$paises= Paises::all();
return view('admin.usuarios.edit',compact('usuarios','categorias','productos', 'paises','roles','pivot'));
}
这是我的数据透视表模型
public function users()
{
return $this->belongsTo('App\User','user_id');
}
public function productos()
{
return $this->belongsTo('App\User','tipo_producto_id');
}
在我看来这是多选
<select class="selectpicker form-control" id="select" multiple="multiple" name="tipo_producto[]" required>
<option value="">Seleccione productos...</option>
@foreach($pivot as $p)
@foreach($productos as $producto)
<option {{ $p->tipo_producto_id == $producto->id? 'selected' : '' }} value="{{ $producto->id }}"> {{ $producto->nombre_tipo_producto }}</option>
@endforeach
@endforeach
</select>
这个问题是我重复数据......如果我删除一些数据,这只会添加(重复)到数据透视表
最佳答案
删除一个 foreach 循环并更改 'selected' 的条件修复它:
<select class="selectpicker form-control" id="select" multiple="multiple" name="tipo_producto[]" required>
<option value="">Seleccione productos...</option>
@foreach($productos as $producto)
<option {{ $pivot->contains('tipo_producto_id', $producto->id)? 'selected' : '' }} value="{{ $producto->id }}"> {{ $producto->nombre_tipo_producto }}</option>
@endforeach
</select>
除此之外,您确定要 ProductosUsers 拥有自己的模型吗?使用 belongsToMany
,您可以让 Laravel 处理数据透视表的逻辑。
关于php - 如何通过多选来选择我保留用户的项目,并使用 laravel 5.8 中的另一个多选来更新这些相同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57047144/