Solución:
Creo que puedes cambiar tu consulta e intentarlo como:
$res=User::where('id',$id)->delete();
En primer lugar,
Deberías saber eso destroy()
es el método correcto para eliminar una entidad directamente a través de un objeto o modelo y delete()
solo se puede llamar en el generador de consultas.
En su caso, no ha comprobado si existe registro en la base de datos o no. El registro solo se puede eliminar si existe.
Entonces, puedes hacerlo como sigue.
$user = User::find($id);
if($user){
$destroy = User::destroy(2);
}
El valor o $destroy
arriba será 0 o 1 en caso de error o éxito respectivamente. Entonces, puede alterar el $data
matriz como:
if ($destroy){
$data=[
'status'=>'1',
'msg'=>'success'
];
}else{
$data=[
'status'=>'0',
'msg'=>'fail'
];
}
Espero que entiendas.
Antes delete
, hay varios métodos en laravel.
User::find(1)
y User::first()
devolver una instancia.
User::where('id',1)->get
y User::all()
devuelve una colección de instancia.
llama delete
en una instancia de modelo devolverá true/false
$user=User::find(1);
$user->delete(); //returns true/false
llama delete
en una colección de instancia devolverá un número que representa el número de registros que se han eliminado
//assume you have 10 users, id from 1 to 10;
$result=User::where('id','<',11)->delete(); //returns 11 (the number of the records had been deleted)
//lets call delete again
$result2=User::where('id','<',11)->delete(); //returns 0 (we have already delete the id<11 users, so this time we delete nothing, the result should be the number of the records had been deleted(0) )
También hay otros métodos de eliminación, puede llamar destroy
como un método modelo estático como a continuación
$result=User::destroy(1,2,3);
$result=User::destroy([1,2,3]);
$result=User::destroy(collect([1, 2, 3]));
//these 3 statement do the same thing, delete id =1,2,3 users, returns the number of the records had been deleted
Una cosa más, si eres nuevo en laravel
,puedes usar php artisan tinker
para ver el resultado, que es más eficiente y luego dd($result)
, print_r($result);