CakePHP e MongoDB: utilizzare un database NoSQL

Pubblicato il 20 Aprile 2015

Chi si occupa di sviluppo di applicazioni web di grandi dimensioni, dove c’è necessità di archiviare ed elaborare una mole notevole di dati, conosce bene l’importanza di puntare su un database NoSQL per lo storage. In questo post ti illustro come utilizzare l’ormai famoso MongoDB con CakePHP grazie all’utilizzo di un plugin che ho testato con la versione 2.6 di Cake.

Per prima cosa, scarica il plugin da qui e caricalo nella cartella app/Plugin/Mongodb. Ora devi attivarlo in app/Config/bootstrap.php:

CakePlugin::load('Mongodb');

A questo punto, come array di connessione in app/Config/database.php, devi specificare il datasource:

public $default = array(
    'datasource' => 'Mongodb.MongodbSource',
    'database' => 'test',
    'host' => 'localhost',
    'port' => 27017
);

Ecco fatto. Puoi fare “ciao ciao” con la manina al buon vecchio MySQL e iniziare i primi test con MongoDB. Potrebbe capitare di dover gestire qualche “differenza”, basta documentarsi. Ad esempio, per una ricerca con l’operatore LIKE:

$regex = new MongoRegex("/.*" .$this->request->data["User"]["q"] .".*/i");
			
$this->User->find = array(
    'conditions' => array(
        'User.username' => $regex
    )
);

Ricorda di utilizzare l’apposito Behavior.

Tips:

Se noti che i dati vengono memorizzati tutti come stringa (anche quelli Date e Integer), puoi effettuare il typecasting del dato nel model tramite il metodo beforeSave:

public function beforeSave($options = array()) {

        if (isset($this->data[$this->alias]['created'])) $this->data[$this->alias]['created'] = new MongoDate(strtotime($this->data[$this->alias]['created']));
       
        return true;
       
}
Condividi il post con i tuoi amici o colleghi
emawebdesign
Autore: emawebdesign

Full Stack Developer, SEO Specialist, esperto della trasformazione digitale con oltre 20 anni di esperienza.

Pubblicato in: