Laravel - データベースとの العمل

こんにちは、将来の開発者たち!Laravelとデータベース管理の魅力的な世界にあなた們を案内することを楽しみにしています。私は年間を通してコンピュータサイエンスを教えてきましたが、データベース操作をマスターすることは自転車に乗るのと同じだと言えます。初めは難しいように見えるかもしれませんが、一度慣れてしまえば、プロジェクトをスムーズに進めることができるでしょう!

Laravel - Working With Database

データベースへの接続

まず基本的なことをから始めましょう - データベースに接続すること。これを、Laravelアプリケーションが新しい親友、データベースと知り合うことだと考えます。彼らはまず知り合う必要があります!

設定

まず第一に、Laravelにデータベースの場所とアクセス方法を教えます。Laravelは設定ファイルでこれを非常に簡単にします。プロジェクトのルートにある.envファイルを開くと、以下のような内容が見えます:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

これらの行は、Laravelにデータベースへの道筋を示すものです。以下に説明します:

  • DB_CONNECTION: 使用しているデータベースの種類です。デフォルトはMySQLですが、他のデータベースもサポートされています。
  • DB_HOST: データベースの場所です。ローカル開発の場合は通常、自分のコンピュータ(127.0.0.1)です。
  • DB_PORT: データベースにアクセスするためのポート番号です。
  • DB_DATABASE: データベースの名前です。
  • DB_USERNAMEDB_PASSWORD: データベースにアクセスするための認証情報です。

接続のテスト

Laravelがデータベースと知り合ったことを確認しましょう。簡単なartisanコマンドでこれを行います:

php artisan tinker

これでLaravelのインタラクティブシェルが開きます。接続を試みましょう:

DB::connection()->getPdo();

もしさらしさらしい数字と文字の文字列が表示されたら、おめでとうございます!Laravelアプリケーションとデータベースは今、親友になりました。

テーブルの作成

これで接続が完了したので、テーブルを作成しましょう。データベースの世界では、テーブルはデータを保存するためのスプレッドシートのようなものです。

マイグレーション

Laravelは「マイグレーション」と呼ばれるものを使ってテーブルを作成または変更します。マイグレーションはデータベースのタイムマシンのようなものです - データベースの過去と未来を自由に移動できるようにします。

マイグレーションを作成するには、以下のコマンドを使用します:

php artisan make:migration create_users_table

これでdatabase/migrationsフォルダに新しいファイルが作成されます。それを開くと、以下のような内容が見えます:

public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}

これはテーブルの青写真のようなものです。以下に説明します:

  • $table->id(): 自動インクリメントのIDカラムを作成します。
  • $table->string('name'): 名前を保存するためのカラムを作成します。
  • $table->string('email')->unique(): 独自のメールカラムを作成します。
  • $table->timestamp('email_verified_at')->nullable(): ネガティブルなタイムスタンプカラムを作成します。
  • $table->string('password'): パスワードを保存するためのカラムを作成します。
  • $table->rememberToken(): 「記憶」トークンを保存するためのカラムを作成します。
  • $table->timestamps(): created_atupdated_atカラムを作成します。

このテーブルをデータベースに作成するには、以下のコマンドを実行します:

php artisan migrate

それで、テーブルが作成されました。

データの挿入

テーブルが作成されたので、データを追加しましょう。Laravelにはいくつかの方法があります。

Eloquentを使用する

EloquentはLaravelの内蔵ORM(オブジェクト関係マッピング)です。EloquentはPHPコードとデータベースの間の翻訳者のようなものです。以下にその使用方法を示します:

use App\Models\User;

$user = new User;
$user->name = 'John Doe';
$user->email = '[email protected]';
$user->password = bcrypt('password');
$user->save();

この例では、新しいUserオブジェクトを作成し、プロパティを設定し、データベースに保存します。

クエリビルダを使用する

もっとSQLに近い方法を好む場合は、Laravelのクエリビルダを使用できます:

DB::table('users')->insert([
'name' => 'John Doe',
'email' => '[email protected]',
'password' => bcrypt('password'),
]);

この方法は少し直接ですが、Laravelにどのテーブルにデータを挿入するかを指示します。

データの取得

データをデータベースに保存したので、それを取得する方法を学びましょう。

Eloquentを使用する

すべてのユーザーを取得するには:

$users = User::all();

特定のユーザーを取得するには:

$user = User::find(1);

条件付きでユーザーを取得するには:

$users = User::where('name', 'John Doe')->get();

クエリビルダを使用する

すべてのユーザーを取得するには:

$users = DB::table('users')->get();

特定のユーザーを取得するには:

$user = DB::table('users')->where('id', 1)->first();

条件付きでユーザーを取得するには:

$users = DB::table('users')->where('name', 'John Doe')->get();

データの更新

データの更新もデータの挿入と同様に簡単です。いくつかの方法をみてみましょう。

Eloquentを使用する

$user = User::find(1);
$user->name = 'Jane Doe';
$user->save();

クエリビルダを使用する

DB::table('users')
->where('id', 1)
->update(['name' => 'Jane Doe']);

データの削除

最後に、データベースからデータを削除する方法を学びましょう。

Eloquentを使用する

$user = User::find(1);
$user->delete();

クエリビルダを使用する

DB::table('users')->where('id', 1)->delete();

それで、Laravelでのデータベース操作の基本を学びました。練習が成功の鍵です。さまざまなクエリを試してみてください。間もなくデータベースの達人になるでしょう!

以下に、今回カバーしたメソッドの簡単な参照表を示します:

操作 Eloquent クエリビルダ
挿入 $user = new User; $user->save(); DB::table('users')->insert([]);
すべてを取得 User::all(); DB::table('users')->get();
1つを取得 User::find(1); DB::table('users')->where('id', 1)->first();
更新 $user->save(); DB::table('users')->where('id', 1)->update([]);
削除 $user->delete(); DB::table('users')->where('id', 1)->delete();

未来のデータベースマスター、楽しいコーディングを!

Credits: Image by storyset