Laravel - Lavorare con il Database
Ciao a tutti, futuri sviluppatori! Sono entusiasta di portarvi in un viaggio attraverso il mondo affascinante di Laravel e la gestione del database. Come qualcuno che ha insegnato scienze informatiche per anni, posso assicurarvi che padroneggiare le operazioni sul database è come imparare a guidare una bicicletta - potrebbe sembrare spaventoso all'inizio, ma una volta che avete preso confidenza, zoomerete attraverso i vostri progetti con facilità!
Connessione al Database
Iniziamo con le basi - connettersi a un database. Immaginate questo come presentare la vostra applicazione Laravel al suo nuovo migliore amico, il database. Devono conoscersi prima di iniziare a collaborare!
Configurazione
Prima di tutto, dobbiamo dire a Laravel dove trovare il nostro database e come accedervi. Laravel rende questo super facile con il suo file di configurazione. Aprite il file .env
nella radice del vostro progetto, e vedrete qualcosa del genere:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
Queste righe sono come dare a Laravel una mappa del vostro database. Analizziamo:
-
DB_CONNECTION
: Questo è il tipo di database che state utilizzando. MySQL è predefinito, ma Laravel supporta anche altri. -
DB_HOST
: Dove vive il vostro database. Per lo sviluppo locale, è solitamente il vostro computer (127.0.0.1). -
DB_PORT
: La porta su cui Laravel deve bussare per accedere al database. -
DB_DATABASE
: Il nome del vostro database. -
DB_USERNAME
eDB_PASSWORD
: Il vostro segno segreto per entrare nel database.
Test della Connessione
Ora che abbiamo presentato Laravel al nostro database, assicuriamoci che stiano andando d'accordo. Possiamo farlo con un semplice comando artisan:
php artisan tinker
Questo apre la shell interattiva di Laravel. Ora, proviamo a connetterci:
DB::connection()->getPdo();
Se vedete una lunga stringa di numeri e lettere, congratulazioni! La vostra applicazione Laravel e il database sono ora grandi amici.
Creazione di Tabelle
Ora che siamo connessi, è il momento di creare alcune tabelle. Nel mondo del database, le tabelle sono come fogli di calcolo dove conserviamo i nostri dati.
Migrazioni
Laravel utilizza qualcosa chiamato "migrazioni" per creare e modificare tabelle. Pensate alle migrazioni come a una macchina del tempo per il vostro database - vi permettono di viaggiare indietro e in avanti nella storia del vostro database.
Per creare una migrazione, utilizzate questo comando artisan:
php artisan make:migration create_users_table
Questo crea un nuovo file nella cartella database/migrations
. Apritelo, e vedrete qualcosa del genere:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
Questa è come una piantina per la vostra tabella. Analizziamo:
-
$table->id()
: Crea una colonna di ID auto-incrementante. -
$table->string('name')
: Crea una colonna per conservare i nomi. -
$table->string('email')->unique()
: Crea una colonna email unica. -
$table->timestamp('email_verified_at')->nullable()
: Crea una colonna di timestamp nullabile. -
$table->string('password')
: Crea una colonna per conservare le password. -
$table->rememberToken()
: Crea una colonna per conservare i token "ricorda me". -
$table->timestamps()
: Crea le colonnecreated_at
eupdated_at
.
Per creare questa tabella nel vostro database, eseguite:
php artisan migrate
E voilà! La vostra tabella è creata.
Inserimento dei Dati
Ora che abbiamo una tabella, mettiamo alcuni dati al suo interno. Ci sono diversi modi per farlo in Laravel.
Utilizzando Eloquent
Eloquent è l'ORM (Object-Relational Mapping) integrato in Laravel. È come un traduttore tra il vostro codice PHP e il database. Ecco come utilizzarlo per inserire dati:
use App\Models\User;
$user = new User;
$user->name = 'John Doe';
$user->email = '[email protected]';
$user->password = bcrypt('password');
$user->save();
In questo esempio, stiamo creando un nuovo oggetto User, impostando le sue proprietà e poi salvandolo nel database. È semplice così!
Utilizzando il Builder di Query
Se preferite un approccio più simile a SQL, potete utilizzare il Builder di Query:
DB::table('users')->insert([
'name' => 'John Doe',
'email' => '[email protected]',
'password' => bcrypt('password'),
]);
Questo metodo è un po' più diretto - stiamo dicendo esattamente a Laravel in quale tabella inserire e quali dati utilizzare.
Recupero dei Dati
Ora che abbiamo inserito dati nel nostro database, impariamo come riprenderli.
Utilizzando Eloquent
Per recuperare tutti gli utenti:
$users = User::all();
Per trovare un utente specifico:
$user = User::find(1);
Per recuperare utenti con condizioni:
$users = User::where('name', 'John Doe')->get();
Utilizzando il Builder di Query
Per recuperare tutti gli utenti:
$users = DB::table('users')->get();
Per trovare un utente specifico:
$user = DB::table('users')->where('id', 1)->first();
Per recuperare utenti con condizioni:
$users = DB::table('users')->where('name', 'John Doe')->get();
Aggiornamento dei Dati
Aggiornare i dati è altrettanto facile come inserirli. Ecco alcuni metodi.
Utilizzando Eloquent
$user = User::find(1);
$user->name = 'Jane Doe';
$user->save();
Utilizzando il Builder di Query
DB::table('users')
->where('id', 1)
->update(['name' => 'Jane Doe']);
Eliminazione dei Dati
Infine, impariamo come rimuovere i dati dal nostro database.
Utilizzando Eloquent
$user = User::find(1);
$user->delete();
Utilizzando il Builder di Query
DB::table('users')->where('id', 1)->delete();
Ecco un riepilogo rapido delle operazioni che abbiamo coperto:
Operazione | Eloquent | Builder di Query |
---|---|---|
Inserimento | $user = new User; $user->save(); |
DB::table('users')->insert([]); |
Recupero Tutti | User::all(); |
DB::table('users')->get(); |
Recupero Uno | User::find(1); |
DB::table('users')->where('id', 1)->first(); |
Aggiornamento | $user->save(); |
DB::table('users')->where('id', 1)->update([]); |
Eliminazione | $user->delete(); |
DB::table('users')->where('id', 1)->delete(); |
Buon coding, futuri maestri del database!
Credits: Image by storyset