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

Filamentを使ったLaravelアプリの開発

FilamentについてLLMに聞くと以下のような回答が返ってきました。なかなか良さそうなので早速試してみます。 Filamentは、Laravel アプリケーションのためのオープンソースの管理パネル作成フレームワークです。簡単に言うと、Filament を使うと、わずか数行のコードで、美しく、機能的な管理パネルを構築できます。 Filamentを使うと以下のようなメリットがあります: 迅速な開発: Filament は、事前構築されたコンポーネントとテンプレートを提供することで、開発時間を大幅に短縮します。 美しいデザイン: Filament は、洗練された UI と UX を提供し、ユーザーエクスペリエンスを向上させます。 カスタマイズ性: Filament は、豊富なカスタマイズオプションを提供し、アプリケーションのニーズに合わせて管理パネルを調整できます。 強力な機能: Filament は、ユーザー管理、認証、アクセス制御、データテーブル、フォーム、ファイルアップロードなど、管理パネルに不可欠な機能をすべて備えています。 コミュニティサポート: Filament は、活発なコミュニティサポートがあり、質問や問題解決の支援を受けることができます。 プロジェクト作成とFilamentインストール 新しいLaravelプロジェクトを以下のように作成します。 composer create-project laravel/laravel companydb cd companydb .envのDB設定を書き換えます。 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=companydb DB_USERNAME=root DB_PASSWORD=xxxx mysqlにcompanydbデータベースを新規作成し、migrationコマンドを実行します。 php artisan migrate filament DOCSに従ってFilamentのインストールをします。 composer require filament/filament:"^3.2" -W php artisan filament:install --panels php artisan make:filament-user ブラウザでhttp://127.0.0.1:8000/admin/にアクセスすれば作成したユーザとパスワードでログインできます。 ログインすると以下のような画面が表示されます。 データベースモデルを作成する Model::unguard()を追加 AppServiceProvider.phpにModel::unguard()を追加します。 /** * Bootstrap any application services. */ public function boot(): void { Model::unguard(); } Blueprintを使ってモデルを作成する モデルの作成はBlueprintというツールを使って行います。まず以下のようにインストールし、draft....

June 25, 2024 · 1 min · Don