データの検索

データの検索

データベースの操作で必須となるのは検索です。検索とは特定の条件に合致したデータを抽出する処理のことです。データベースは検索ができるようになっています。また、Laravelもデータベースの検索をサポートしています。

ダミーデータの作成

今回はmembersテーブルを作成します。membersテーブルは以下のようになっています。

カラム名内容
nameメンバーの名前
emailメンバーのメールアドレス
ageメンバーの年齢

以下のコマンドで、モデルとマイグレーションファイルを作成します。

php artisan make:model Member -m

マイグレーションファイルは以下のようにします。

        Schema::create('members', function (Blueprint $table) {
            $table->id();
            $table->string("name");
            $table->string("email")->unique();
            $table->tinyInteger("age");
            $table->timestamps();
        });

モデルファイルは以下のようにします。

    protected $fillable = [
        "name",
        "email",
        "age",
    ];

以下のコマンドでマイグレーションを実行します。

php artisan migrate

次に、tinkerを使用してダミーデータを生成します。tinkerとは対話型のシェルで、コマンドを打ち込むとすぐに実行されるシステムです。Laravelの関数やメソッドの挙動の確認やテストなどに用いると便利です。PHPサーバーにログインし、以下のコマンドでtinkerを起動します。

php artisan tinker

次に、以下のコマンドで、いくつかのダミーデータを入力します。

#メンバー1
$sato = new Member();
$sato->name = "sato";
$sato->email = "sato@example.com";
$sato->age = 21;
$sato->save();

#メンバー2
$tanaka = new Member();
$tanaka->name = "tanaka";
$tanaka->email = "tanaka@example.com";
#tanaka->age = 17;
$tanaka->save();

#メンバー3
$suzuki = new Member();
$suzuki->name = "suzuki";
$suzuki->email = "suzuki@example.jp";
$suzuki->age = 30;
$suzuki->save();

new Member()でメンバーモデルのインスタンスを生成し、プロパティに値を代入した後、saveメソッドでデータベースに保存しています。

次にデータの取得、検索を行ってみます。以下のコマンドを実行し、どのようなデータが取得できるか確認します。

#全件取得
$members = Member::all();

#1件取得
$member = Member::find(1);

#where検索 nameの一致検索
$member_where_name = Member::where("name", "sato")->get();

#where検索 ageの条件検索 18歳以上
$member_where_age = Member::where("age", ">=", 18)->get();

#LIKE検索 あいまい検索 .jpを持つメールアドレスの検索
$member_like_email = Member::where("email", "LIKE", "%.jp%")->get();

全件取得では、allメソッドを使用することで取得できます。1件取得では、findメソッドに取得したいデータのidを指定します。whereメソッドを使用した検索ではwhereメソッド内に、検索したいカラム名と条件式、検索したいキーワードを指定することで使用できます。条件式がしていない場合はイコールと認識されます。LIKE検索はいわゆるあいまい検索で、%で囲ったキーワードに一部一致するデータを取得できます。

ほかにも検索には様々な機能がありますが、今回はこれだけにします。

今回はデータの検索について解説しました。今回解説したもので、一通りの検索はできると思いますが、ほかにも機能があるので、調べてみてください。

コメントを残す

CAPTCHA