Saltar al contenido

Método delete () de ORM elocuente de laravel

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

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *