Eloquent ORMの基本

Laravel Eloquent ORMは、Laravelフレームワークに組み込まれたオブジェクトリレーショナルマッパー(ORM)であり、データベースとのやり取りを、オブジェクト指向のインターフェースを通じて行うことができます。構文がシンプルでクエリ生成、リレーションシップの管理などが簡単にできます。 モデルの作成 以下のコマンドでモデルとデータベースマイグレーションファイルを作成します。モデルは、テーブルの各カラムに対応する属性と、データベース操作を行うメソッドを持っています。 php artisan make:model Share -m これによってapp/Models/Share.phpとapp/database/migrations/xxxx_create_shares_table.phpという二つのファイルが作成されます。xxxxには日付が入ります。 Share.phpにはほかのモデルとのリレーションシップなどを記述します。 <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; class Share extends Model { use HasFactory; public function company(): BelongsTo { return $this->belongsTo(Company::class); } } テーブルの定義はxxxx_create_shares_table.phpに記述します。 public function up(): void { Schema::create('shares', function (Blueprint $table) { $table->id(); $table->foreignId('company_id')->constrained()->onDelete('cascade'); $table->date('date'); $table->unsignedBigInteger('total_shares')->nullable(); $table->unsignedBigInteger('average_shares')->nullable(); $table->unsignedBigInteger('treasury_shares')->nullable(); $table->timestamps(); }); } 作成したモデルについて以下のように確認することができます。 php artisan mode:show Share Eloquentモデルの暗黙の約束事(conventions) テーブルの名前 データベーステーブルの名前はモデル名によって決められます。クラス名の「スネークケース」で複数形にしたものがテーブル名として使用されます。Shareモデルのテーブル名がsharesに、FiscalYearモデルがあればテーブル名がfiscal_yearsとなります。 上記の慣例に従っていない場合は、モデルクラスにおいてテーブル名を指定することができます。 class Share extends Model { protected $table = 'my_table_name'; } プライマリーキー(Primary Keys) 各モデルに対応するデータベーステーブルに id という名前のプライマリキーカラムが存在するのが約束事です。モデルに protected $primaryKey プロパティを定義することで、別のカラムを指定できます。そのほかに...

June 27, 2024 · 1 min · Don