名言が無い2
Model の基礎
問題
名言を CRUD 操作するサイトを作ろうとしています。
Quote (名言)に関する Eloquent モデルと、それに対応するテーブルを作り、初期値として、そのデータの個数がゼロであることを確かめてください。
問題は、以下の手順で解いてください。
- Red:小さいテストを作成し、失敗を確認してください
- Green:テストを成功させてください
- Refactor:整理・整頓してください
- 必要に応じて、1から3を繰り返してください
ヒント
背景知識
- CRUD 操作: データを作成、読取、更新、削除する操作のこと
- Eloquent モデル: Laravel でデータベースを操作する class
便利なアサーションの例
アサーションの調べ方 も合わせてご覧ください。
今回は、以下を使うのではないかと思います。
-
assertCount($int, $countable)(PHPUnit : $countable の個数が $int に等しいか)
解答例
続きを読む
実行環境:
- Laravel v13.7.0
- PHP 8.4
- PHPUnit
Red
テストを作成し、失敗を確認します。
bash:
php artisan make:test App/Models/QuoteTest
tests/Feature/App/Models/QuoteTest.php:
<?php
namespace Tests\Feature\App\Models;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
use App\Models\Quote;
class QuoteTest extends TestCase
{
use RefreshDatabase;
public function test_名言がひとつも無い(): void
{
$quotes = Quote::all();
$this->assertCount(0, $quotes);
}
}
bash:
php artisan test ./tests/Feature/App/Models/QuoteTest.php
Green
Model を migration ファイルと一緒に作ります。
bash:
php artisan make:model Quote --migration
テストを実行し、通ることを確認します。
bash:
php artisan test ./tests/Feature/App/Models/QuoteTest.php
Refactor
今回は特にありません。
解説
続きを読む
Eloquent モデルについて
Eloquent とは、 Laravel に最初から入っているデータベース ORM です。
Eloquent モデルにメソッドを実装し、そのメソッドをコントローラーから実行することで、データベース処理を実行します。
今回の問題では、内部実装をしませんでしたが、これからこのモデルをたくさん使います。
Eloquent によるデータベース操作は、生の SQL よりも遅いようです。
それでもなお、 Eloquent モデルを使う理由は、その生産性の高さや、可読性の高さ、利用しやすさなのでしょう。
Eloquent の意味は、「雄弁な」とか「表現力の高い」という意味です。
なので、 Laravel に慣れ親しむなら、 Eloquent を自在に操る必要があります。
外国語を学ぶ時と一緒で、たくさん読んで、使って、慣れていくのがよいのかなと思っています。
<= 問題を読んだ・解いた・理解したなどのチェックにご利用ください。クリックすると、チェックが変化します。