Usare Eloquent al di fuori di Laravel

Ti piace usare Eloquent, vero? Vorresti usarlo anche nei progetti dove Laravel non c'è? Tranquillo, abbiamo la soluzione per te.
francesco
Francesco Malatesta
10/04/2014 in Tutorial

Traduzione dell'articolo "Use Laravel's Eloquent ORM outside of Laravel"

Studiando Laravel ed il suo rapporto con i Database la prima cosa che mi viene in mente è la semplicità, quasi ridicola, dell’uso di Eloquent ORM. Un Object Relational Mapping, in breve, permette di mappare le entità da usare nella propria business logic, le loro relazioni e, come logica conseguenza, di lavorare in maniera agile scrivendo codice di qualità superiore.

Tante volte mi sono chiesto: “e se volessi usare Eloquent in altri progetti? Senza dover necessariamente installare Laravel?”

Non sempre, infatti, si ha la possibilità di usare Laravel in un progetto, magari già avviato. Puoi stare tranquillo: si può fare!

Laravel, come ben saprai, è modulare. Al momento della sua realizzazione è stato diviso in più pacchetti stand-alone da poter scaricare ed assemblare in base alle necessità. Uno di questi package è illuminate/database. Proprio quello di cui abbiamo bisogno!

Includerlo nel proprio progetto è molto semplice: innanzitutto hai bisogno di Composer. Crea quindi un file composer.json nella cartella del tuo progetto e aggiungici

Ora avvia il comando composer install in modo tale da installare le varie dipendenze specificate (nel nostro caso, Eloquent e il pacchetto illuminate/database, appunto).

Siamo ad un solo passo dal poter usare Eloquent: manca infatti un adeguato include delle varie dipendenze e l’inizializzazione dei parametri necessari (configurazione del database e boot di Eloquent).

Qui il codice di bootstrap.

<?php
require 'vendor/autoload.php';  

use Illuminate\Database\Capsule\Manager as Capsule;  

$capsule = new Capsule; 

$capsule->addConnection(array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'test',
    'username'  => 'test',
    'password'  => 'l4m3p455w0rd!',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => ''
));

$capsule->bootEloquent();

È fatta: non hai bisogno d’altro. Tutto quello che devi fare, da questo momento in avanti, è creare i tuoi model come hai sempre fatto e includere, dove necessario, il file di setup del database.

<?php 
	include 'database.php'; 

	// Creazione del model
	class Books extends Illuminate\Database\Eloquent\Model {
	    public $timestamps = false;
	}

	// Prendiamo il libro dall'id uguale ad 1
	$book = Books::find(1); 

	// Qualche modifica...
	$book->name = "The Best Book in the World";
	$book->author = "Ed Zynda";
	
	// Salviamo tutto sul database!
	$book->save();

È fatta: non hai bisogno d’altro. Tutto quello che devi fare, da questo momento in avanti, è creare i tuoi model come hai sempre fatto e includere, dove necessario, il file di setup del database.

Insomma, niente di troppo complesso. Per saperne di più su cosa puoi fare con Eloquent, dai un’occhiata qui.