Piszemy własne komendy w Laravelu, jednocześnie ucząc się Query Buildera oraz Eloquent ORMa. Do dzieła.
Kontynuujemy projekt. Przechodzimy do console.php (obok web.php w routes) i robimy konieczne importy:
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\DB;
use App\Models\Person;
Pierwsza komenda – policz użytkowników w bazie danych:
Artisan::command('count', function () {
$count = Person::count();
$this->comment("Number of people in db: $count");
});
Wywołujemy ją za pomocą:
php artisan count
Teraz to samo, ale z Query Builderem zamiast modelu i ORMa:
Artisan::command('count2', function () {
$count = DB::table('people')->count();
$this->comment("Number of people in db: $count");
});
Ok, teraz podliczymy tych powyżej 25 lat:
Artisan::command('count-above-25', function () {
$count = Person::where('age', '>', 25)->count();
$this->comment("Number of people above 25 in db: $count");
});
Teraz za pomocą QB:
Artisan::command('count-above-25-db', function () {
$count = DB::table('people')
->where('age', '>', 25)->count();
$this->comment("Number of people above 25 in db: $count");
});
Ok, tworzymy get-by-id:
Artisan::command('get-by-id {id}', function (int $id) {
$person = Person::find($id);
$this->comment("Name: {$person->firstName} {$person->lastName}");
$this->comment("Age: {$person->age}");
$this->comment("Created at: {$person->created_at}");
});
Korzystamy z tego w następujący sposób:
php artisan get-by-id 5
Teraz wersja z QB zamiast modelu i ORMa:
Artisan::command('get-by-id-db {id}', function (int $id) {
$person = DB::table('people')->find($id);
$this->comment("Name: {$person->firstName} {$person->lastName}");
$this->comment("Age: {$person->age}");
$this->comment("Created at: {$person->created_at}");
});
Więcej Laravela wkrótce!