检查laravel orm删除的成功

时间:2016-06-06 21:02:15

标签: php jquery ajax laravel eloquent

我这张表中有一个删除链接

@foreach ($tasks as $task)
        <tr>
          <td>{{$task->id}}</td>
            <td>{{$task->name}}</td>
            <td><a href="javascript:void(0)" onclick="eliminar({{$task->id}})" id="borrar_{{$task->id}}" name="borrar_{{$task->id}}" class="btn btn-danger">Eliminar</a></td>
        </tr>
    @endforeach

和javascript代码,它向控制器的destroy方法发出请愿

function eliminar(id){
  var _token = $('meta[name="_token"]').attr('content');
  $.ajax({

           type: "DELETE",
           url: "task/"+id,
           data: { _token : _token},
           success: function (data) {
              $("#borrar_"+id).closest('tr').fadeOut();
           },
           error: function (data) {
               alert('No se pudo eliminar el resgistro');
           }
    });
}

控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Task;

class TaskController extends Controller
{
   .
   .
   .

/**
 * Remove the specified resource from storage.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function destroy($id)
{
     Task::destroy($id);
}
}

单击该按钮时,其父表行淡出,但我认为这不是最好的方法。如何检查Task::destroy($id)是否成功成功发送成功错误响应ajax请求

1 个答案:

答案 0 :(得分:0)

在您的控制器中:

public function destroy($id)
{
    $deleted = Task::destroy($id);
    return $deleted ? 'deleted' : 'error';
}

在你的js中:

success: function (data) {
    if(data === 'deleted'){
        $("#borrar_"+id).closest('tr').fadeOut();
    }else{
        alert('No se pudo eliminar el resgistro');
    }
},

我觉得有用的另一个方法是使用findOrFail来获取模型,所以如果找不到模型则返回404,如果发现模型,则返回错误响应,如果找到模型,则delete方法应该总是返回true,所以:< / p>

public function destroy($id)
{
    $task = Task::findOrFail($id);
    return $task->delete(); // will return true
}