Kontynuacja lekcji poprzednich, poznajemy Laravela, Eloquent ORM, Query Builder i inne, ciekawe rzeczy. Do dzieła!

Ok, przypomnijmy sobie tę komendę:

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}");
});

Będziemy z niej korzystać. Piszemy komendę, która za pomocą QB wrzuci nam nowy rekord do bazy danych:

Artisan::command('insert-jane', function () {
    $lastInsertedId = DB::table('people')->insertGetId([
        'firstName' => 'Jane',
        'lastName' => 'Doe',
        'age' => 20
    ]);
    $this->comment($lastInsertedId);
});

Po wykonaniu komendy zobaczymy ID, które możemy sobie od razu sprawdzić. I zobaczyć, że nie mamy created_at…

Ok, następna komenda:

Artisan::command('insert-jane-ts', function () {
    $lastInsertedId = DB::table('people')->insertGetId([
        'firstName' => 'Jane',
        'lastName' => 'Timestamp',
        'age' => 20,
        'created_at' => \Carbon\Carbon::now()
    ]);
    $this->comment($lastInsertedId);
});

W DB nie ma innej opcji (znaczy jest, ale wymaga nieco więcej wiedzy). Teraz mamy created_at. Ok, a może insert za pomocą modelu?

Artisan::command('insert-john', function () {
    $john = new Person;
    $john->firstName = "John";
    $john->lastName = "Doe";
    $john->age = 30;
    $john->save();
    $this->comment($john->id);
});

Jeżeli nasz model ma wypełnione pole fillable to mamy opcję create. Wypełnijmy fillable w modelu:

class Person extends Model
{
    protected $fillable = ['firstName', 'lastName', 'age'];
    use HasFactory;
}

Ok, możemy się bawić w create, które zrobi mass assignment, weźmie tablicę zawierającą te pola i od razu utworzy model w bazie danych:

Artisan::command('insert-john-2nd', function () {
    $john = Person::create([
        'firstName' => 'John',
        'lastName' => 'Fillable',
        'age' => 33

    ]);
    $this->comment($john->id);
});

Ok, na razie wystarczy tych zabaw.