ホームページ >データベース >mysql チュートリアル >## Laravel の Eloquent における複数テーブルの継承: よりクリーンなアプローチ?
Laravel の Eloquent における複数テーブルの継承
単一テーブル継承の実装は、モデルを拡張するための便利なソリューションのように聞こえるかもしれませんが、次のような欠点があります。多数の NULL 値と特定の列のクエリ時の複雑さにより、データベース サイズが増加します。代わりに、複数テーブルの継承により、よりクリーンなアプローチが提供されます。
スキーマ設計
モデル タイプごとに共有列と一意の列に個別のテーブルを作成します。例:
Eloquent Models
Post モデルを親クラスとして定義します。
<code class="php">class Post extends Eloquent { // Shared column, relationships, etc. public function postable(){ return $this->morphTo(); } }</code>
投稿可能なタイプごとに 質問 などの子モデルを作成します。
<code class="php">class Question extends Post { public function post(){ return $this->morphOne('Post', 'postable'); } }</code>
使用法
新規作成モデル
には、共有テーブル (posts) とタイプ固有のテーブル (questions) の両方でのレコードの作成が含まれます。
<code class="php">$question = new Question(); // Create a question record $question->question_column = 'test'; $question->save(); $post = new Post(); // Create a post record $post->shared_column = 'New Question Post'; $post->save(); // Link them together $question->post()->save($post);</code>
このアプローチにより、より効率的なデータベース構造が保証され、Laravel でのモデル継承のためのスケーラブルなソリューションが提供されます。
以上が## Laravel の Eloquent における複数テーブルの継承: よりクリーンなアプローチ?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。