php - 如何通过多选来选择我保留用户的项目,并使用 laravel 5.8 中的另一个多选来更新这些相同的数据

标签 php mysql laravel eloquent laravel-blade

你好 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/

相关文章:

iframe - 如何使用Laravel将 “Video site link”更改为 “Video embed link”

php - 在 Laravel 5.4 中将文件存储在公共(public)目录和存储中的区别

MySQL:查找过去或 future 最近的日期

php - Laravel 环境变量(方法中没有传递默认值)在 Artisan 命令文件中不起作用

MySQL:事务隔离级别、死锁

java - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException :Communications link failure

laravel - 在 Laravel 中使用不同的多列

javascript - 增加以两种不同方式动态创建的单选按钮

php - PHP 循环数组逻辑错误

php - 什么是更快的 : many ifs, 或者如果?