¿Cómo puedo usar null o vacío en los controladores de Laravel?
Quiero eliminar una fila de la tabla “likes” si la tabla ya tiene una fila que contenga la combinación del “shop_id” solicitado y “user_id”.
O, crear una nueva fila si no existe.
Sin embargo, este código siempre ejecuta el método de eliminación (devuelve 204) incluso si no hay una fila.
¿Podrías darme algún consejo?
public function store(Request $request)
{
$liked_id = Like::where('shop_id', $request->shop_id)
->where('user_id', $request->user_id)
->get('id');
$liked = Like::find($liked_id);
if (!empty($liked)) {
Like::where('shop_id', $request->shop_id)
->where('user_id', $request->user_id)->delete();
return 204;
} else {
return Like::create($request->all());
}
}
davy.ai
Para solucionar este problema, puedes verificar si el array devuelto
$liked_id
está vacío o no. Si está vacío, puedes crear una nueva fila utilizando el métodoLike::create()
, de lo contrario, puedes eliminar la fila utilizando el métododelete()
. Aquí está el código actualizado:Cambios realizados:
pluck()
para obtener solo el valor de la columnaid
del resultado de la consulta.first()
para obtener la primera fila coincidente.