- Installa le dipendenze di frontend
npm install
- Fai partire il compilatore per i file di frontend
npm run dev
- Installa le dipendenze di backend in un nuovo terminale
composer install
- Fai partire il server di sviluppo backend
php artisan serve
- Copia il file
.env.example
e chiamalo.env
. Poi esegui il comando per generare la chiave
php artisan key:generate
-
Avvio MAMP
-
Apro PHPMyAdmin
-
Creo un nuovo DB (es.
103_rent
) -
nel file
.env
aggiungo i parametri di connessione presenti sulla pagina iniziale di MAMP
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=103_rent
DB_USERNAME=root
DB_PASSWORD=root
Per creare una tabella lanciare il comando
php artisan make:migration create_houses_table
Aggiungi poi tutte le colonne che rappresentano la tabella nella funzione up()
. I tipi di dato disponibili sono qui
// create_houses_table
public function up()
{
Schema::create('houses', function (Blueprint $table) {
$table->id();
$table->tinyInteger('rooms')->unsigned();
$table->tinyInteger('bathrooms')->unsigned();
$table->smallInteger('square_meters')->unsigned();
$table->enum('type', ['appartment', 'independent', 'villa']);
$table->string('address', 100);
$table->string('city', 50);
$table->string('state', 50);
$table->string('zipcode', 15);
$table->text('description');
$table->float('price', 5, 2);
$table->timestamps();
});
}
Eseguo la migrazione appena creata con il comando
php artisan migrate
Aggiungo un paio di righe da PHPMyAdmin per visualizzare dati di esempio
Creo un Model che rappresenti la tabella appena realizzata con il comando
php artisan make:model House
Creo un Controller per la risorsa House
con il comando
php artisan make:controller HouseController
Importo il controller nel file routes/web.php
per assegnargli delle rotte
// web.php
use App\Http\Controllers\HouseController;
// ...
// # Rotte risorsa house
Route::get('/house', [HouseController::class, 'index'])->name('house.index');
Realizzo una funzione contenente la logica del metodo legato in routes/web.php
dentro il controller HouseController.php
. Dovremo
- importare il modello
House
- nel metodo
index()
recuperare tutte gli elementi della tabella e passarli ad una vista
// HouseController.php
use App\Models\House;
// ...
class HouseController extends Controller
{
public function index()
{
$houses = House::all();
return view('house.index', compact('houses'));
}
}
creo un file resources\views\house\index.blade.php
e estendo il layout app.blade.php
.
In un forelse stamperò tutti i dati ricevuti
@extends('layouts.app')
@section('main-content')
<section class="container mt-5">
@forelse($houses as $house)
<p>
<strong>Type</strong>: {{ $house->type }} <br>
<strong>Rooms</strong>: {{ $house->rooms }} <br>
<strong>Bathrooms</strong>: {{ $house->bathrooms }}
</p>
<hr>
@empty
<h2>Non ci sono risultati</h2>
@endforelse
</section>
@endsection