无法删除我想要的记录,只有第一个

时间:2018-10-02 04:11:12

标签: laravel laravel-5.5

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

该视图的代码为:

    <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');

}

在另一篇文章中,我有一个相似的问题,但是,这是一个编辑视图,问题是值从未到达模态窗口,因此我更改了每一行的ID名称,并且一切正常。在这种情况下,我只需要发送该行的ID,但始终相同,即查询的第一个。

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

谢谢。

2 个答案:

答案 0 :(得分:1)

如果在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> 

答案 1 :(得分:0)

问题:

所有隐藏的表单都具有相同的ID("delete-horario-form")。单击删除按钮后,它将提交以"delete-horario-form"作为ID的表单。但是在您的代码中,所有ID均相同,因此它将仅提交第一个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>