Saludos a todos! Soy Nuevo en este foro y a la vez soy principiante en utilizar MongoDB (NoSQL) ya q tengo un proyecto sobre esto. Cabe decir q en mi vida universitaria (actualmente) solo eh trabajado con DB's Relacionales.
Entre investigando en estos ultimos dias sobre PHP con MongoDB ya sé como hacer un "insert, delete y select" en la DB no relacional con PHP(ver. 5) (utilizando Netbeans).
Aqui os le pego el codigo que hize(inicialmente) para Testear todo lo que eh investigando:
Código PHP:
$username = 'administrador';
$userpass = 'administrador';
$dataBase = 'Carrito';
$conexion = new Mongo("mongodb://$username:$userpass@localhost/$dataBase");
$collection = $conexion->selectCollection($dataBase,'Productos');
$nuevoRegistro = array("nombre" => "El Arma Secreta", "Precio" => "S/. 65", "Cantidad" => "67 unid");
$collection->insert($nuevoRegistro);
$collection->remove(array('nombre' => 'El Arma Secreta'));
$collection->remove();
$cursor = $collection->find(array('Precio' => 'S/. 154'));
$cursor = $collection->find();
foreach ($cursor as $prod) {
echo "El producto es: ".$prod["nombre"]." El precio es: ".$prod["Precio"]." La cantidad disponible es: ".$prod["Cantidad"]."\n";
}
Ahora mi problema recae Cuando Quiero formalizar mas este codigo. Miren ahora:
Código PHP:
class Persistencia {
/* Patron Singleton*/
private static $_instancia;
public static function getInstancia() {
try {
if(self::$_instancia == null){
self::$_instancia = new Persistencia();
}
} catch (Exception $exc) {
throw $exc->getMessage();
}
}
/*Fin del Patron */
private $_cn;
private $_collection;
public function __construct() {
try {
$username = 'administrador';
$userpass = 'administrador';
$database = 'Carrito';
$colecction = 'Productos';
$this->_cn = new Mongo("mongodb://$username:$userpass@localhost/$database");
$this->_collection = $this->_cn->selectCollection($database, $colecction);
} catch (Exception $exc) {
error_log($exc->getMessage()."\n", 3, "../log/Error.log");
}
}
private function _executeQuery($query, $tipo) {
try{
switch ($tipo) {
case 1 :
$cursor = $this->_collection->find();
return $cursor;
break;
case 2 :
$this->_collection->insert($query);
break;
case 3 :
$this->_collection->remove();
break;
}
} catch (Exception $exc){
error_log($exc->getMessage()."\n", 3, "../log/Error.log");
error_log("Query:$query\n", 3, "../log/Error.log");
}
}
public function findAll() {
$lista = $this->_executeQuery("", 1);
return $lista;
}
public function addProduct($nombre, $precio, $cantidad) {
$query = array("nombre" => $nombre, "Precio" => $precio, "Cantidad" => $cantidad);
$this->_executeQuery($query, 2);
}
public function deleteAll() {
$this->_executeQuery("", 3);
}
}
Persistencia::getInstancia();
Ahora.. quiero testear esto a ver si me sale tal y como lo hize en el 1er codigo y comenze con el FIND.
Código PHP:
<?php
require_once '../model/Persistencia.php';
$miInstancia = Persistencia::getInstancia();
$lista = $miInstancia->findAll();
var_dump($lista);
?>
No entiendo...¿Que es lo que paso? Esa es mi duda. Trato de ver documentacion pero no encuentro el error.
Y una cosa mas.... ¿Puedo mejorar este codigo?.. Alguna mejora puedo hacerle?
Gracias!.. Espero con ansias sus respuestas.