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.