无法删除我想要的记录,只能删除第一条

No able to delete the record I want, only the first one

我正在尝试删除一条记录。一切似乎都很好,但是我无法删除我想要的记录,只能删除第一个。

视图的代码是:

    <table class="table">
      <thead class="thead-light">
        <tr>
          <th>ID</th>
          <th>Inscrito en</th>
          <th>Cambios</th>
       </tr>
      </thead>
      <tbody>
        @if (!empty($escuelausuarios))
          @foreach($escuelausuarios as $escuelausuario)
            <tr>
              <td> {{ $escuelausuario->idEscuelaUsuario }} </td>
              <td> {{ $escuelausuario->escuela->strNombreEscuela }} </td>
              <td>


                <button class="btn btn-sm btn-outline-secondary" id="delete{{ $escuelausuario->idEscuelaUsuario }}"

                onclick="
                  var resultdelete = confirm ('¿Estas seguro de que deseas eliminar al usuario en ésta escuela?');
                    if (resultdelete)
                    {
                      event.preventDefault();
                      document.getElementById('delete-horario-form').submit();
                    }
                "


                >-</button>
                  <form id="delete-horario-form" action="{{ route('escuelausuarios.destroy',[$escuelausuario->idEscuelaUsuario]) }}"
                    method="POST" style="display: none;">
                      <input type="hidden" name="_method" value="delete">
                      {{ csrf_field() }}
                  </form>                 

              </td>
            </tr>

          @endforeach
        @endif

      </tbody>
    </table>

控制器总是得到相同的Id,所以,我删除的记录总是相同的,第一条。

public function destroy($idEscuelaUsuario)
{
    //
    dd($idEscuelaUsuario);
    $escuelaUsuario = EscuelaUsuario::find($idEscuelaUsuario);
    //dd($escuelaUsuario);
    if($escuelaUsuario->delete())
    {
        return back()->withInput()->with('success','Escuela desvinculada del usuario exitosamente');
        //return redirect()->route('usuarios.index')->with('success','Escuela desvinculada del usuario exitosamente');
    }
    return back()->withInput()->with('error','La escuela no pudo desvuncularse');

}

在另一个 post 中,我有一个类似的问题,但它是一个编辑视图,问题是值从未到达模态 window,所以我更改了每个的 ID 名称行,一切正常。在这种情况下,我只需要发送行的 ID,但它总是相同的,即查询的第一个。

请帮忙,我不知道发生了什么。

提前致谢。

如果您在 foreach 循环中使用 ID 属性,请确保每行具有不同的 ID

如果您使用 document.getElementByID 它将始终搜索第一次出现的 ID

<button class="btn btn-sm btn-outline-secondary" id="delete{{ $escuelausuario->idEscuelaUsuario }}" onclick="
              var resultdelete = confirm ('¿Estas seguro de que deseas eliminar al usuario en ésta escuela?');
                if (resultdelete)
                {
                  event.preventDefault();
                  document.getElementById('delete-horario-form{{ $escuelausuario->idEscuelaUsuario }}').submit();
                }
">-</button>

<form id="delete-horario-form{{ $escuelausuario->idEscuelaUsuario }}" action="{{ route('escuelausuarios.destroy',[$escuelausuario->idEscuelaUsuario]) }}" method="POST" style="display: none;">
   <input type="hidden" name="_method" value="delete">
   {{ csrf_field() }}
</form> 

问题:

所有隐藏的表单都具有相同的 ID ("delete-horario-form")。单击删除按钮时,它将提交 ID 为 "delete-horario-form" 的表单。但是在你的代码中所有的 id 都是相同的,所以它只会提交第一个。

解法:

您已将按钮 ID 设为动态 id="delete{{ $escuelausuario->idEscuelaUsuario }}",这不是必需的。按钮 id 在这里没有任何区别,但表单 id 有区别。通过使表单 id 像按钮一样动态,它将解决您的问题。

<table class="table">
      <thead class="thead-light">
        <tr>
          <th>ID</th>
          <th>Inscrito en</th>
          <th>Cambios</th>
       </tr>
      </thead>
      <tbody>
        @if (!empty($escuelausuarios))
          @foreach($escuelausuarios as $escuelausuario)
            <tr>
              <td> {{ $escuelausuario->idEscuelaUsuario }} </td>
              <td> {{ $escuelausuario->escuela->strNombreEscuela }} </td>
              <td>
                <button class="btn btn-sm btn-outline-secondary" 
                onclick="var resultdelete = confirm ('¿Estas seguro de que deseas eliminar al usuario en ésta escuela?');
                if (resultdelete)
                {
                     event.preventDefault();
                     document.getElementById("delete{{ $escuelausuario->idEscuelaUsuario }}").submit();
                }"


                >-</button>
                  <form id="delete{{ $escuelausuario->idEscuelaUsuario }}" action="{{ route('escuelausuarios.destroy',[$escuelausuario->idEscuelaUsuario]) }}"
                    method="POST" style="display: none;">
                      <input type="hidden" name="_method" value="delete">
                      {{ csrf_field() }}
                  </form>                 

              </td>
            </tr>

          @endforeach
        @endif

      </tbody>
    </table>