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!