Created
December 13, 2018 19:04
-
-
Save parzibyte/0bf6879d66b745ecc3312ecb2d18386a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class ContactosModel | |
{ | |
private static function obtenerBaseDeDatos() | |
{ | |
$host = "127.0.0.1"; | |
$puerto = "27017"; | |
$usuario = rawurlencode("parzibyte"); | |
$pass = rawurlencode("hunter2"); | |
$nombreBD = "agenda"; | |
# Crea algo como mongodb://parzibyte:hunter2@127.0.0.1:27017/agenda | |
$cadenaConexion = sprintf("mongodb://%s:%s@%s:%s/%s", $usuario, $pass, $host, $puerto, $nombreBD); | |
$cliente = new MongoDB\Client($cadenaConexion); | |
return $cliente->selectDatabase($nombreBD); | |
} | |
/** | |
* @param $contacto Contacto: un objeto de la clase Contacto | |
* @return bool indicando si la inserción fue correcta | |
*/ | |
public static function insertar($contacto) | |
{ | |
$baseDeDatos = self::obtenerBaseDeDatos(); | |
# Acceder a la colección contactos | |
$coleccion = $baseDeDatos->contactos; | |
$resultado = $coleccion->insertOne([ | |
"nombre" => $contacto->getNombre(), | |
"direccion" => $contacto->getDireccion(), | |
"correoElectronico" => $contacto->getCorreoElectronico(), | |
]); | |
return $resultado->getInsertedCount() === 1; | |
} | |
public static function obtenerPorId($id) | |
{ | |
$baseDeDatos = self::obtenerBaseDeDatos(); | |
$coleccion = $baseDeDatos->contactos; | |
return $coleccion->findOne(["_id" => new MongoDB\BSON\ObjectId($id)]); | |
} | |
public static function obtenerTodos() | |
{ | |
$baseDeDatos = self::obtenerBaseDeDatos(); | |
$coleccion = $baseDeDatos->contactos; | |
return $coleccion->find(); // Sin criterio de búsqueda | |
} | |
public static function actualizar($id, $contacto) | |
{ | |
echo "id => $id"; | |
$baseDeDatos = self::obtenerBaseDeDatos(); | |
$coleccion = $baseDeDatos->contactos; | |
$resultado = $coleccion->updateOne( | |
// El criterio, algo así como where | |
["_id" => new MongoDB\BSON\ObjectId($id)], | |
// Nuevos valores | |
[ | |
'$set' => [ | |
"nombre" => $contacto->getNombre(), | |
"direccion" => $contacto->getDireccion(), | |
"correoElectronico" => $contacto->getCorreoElectronico(), | |
], | |
] | |
); | |
# Recuerda que puedes ver a cuántos afectó con $resultado->getModifiedCount() | |
return true; | |
} | |
public static function eliminar($id) | |
{ | |
$baseDeDatos = self::obtenerBaseDeDatos(); | |
$coleccion = $baseDeDatos->contactos; | |
$resultado = $coleccion->deleteOne( | |
// El criterio, algo así como where | |
["_id" => new MongoDB\BSON\ObjectId($id)] | |
); | |
return $resultado->getDeletedCount() === 1; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment