私はEloquentを使っていくつかのモデルが定義されたプロジェクトを持っています。これはほとんどの場合単純明快ですが、私は新しいケースを扱う方法を理解するのに問題があります。私は問題をあいまいにしている場合に備えて、ララベル/雄弁な用語を使用しないようにします。Laravelでモデル継承を処理するにはどうすればよいですか?
フィールドid, QuestionTypeID, QuestionStatement
を持つQuestion
というテーブルがあります。
QuestionTypeID
に基づいて、追加のテーブルの情報を取得したり、PHPコード内のさまざまなビジネスロジックを使用したりするさまざまな種類の質問をインスタンス化する必要があります。
interface Question {
int id;
string statement;
function ask($params);
// + CRUD stuff I suppose
}
がどのように私は別の質問のモデルを持って対処することができます。
これらの問題タイプのすべてのような共通のインタフェースを実装するだろうか? Eloquentモデルは本質的に特定のテーブルに結びついていませんか?
私は(論理は、一部のルックアップテーブルから取り出して応答を返します)とTimeFrameQuestion
(一部のTimeFrameモジュールへの呼び出しを必要とするロジック)を持っています。
唯一のテーブルTimeFrameQuestion
は、他のテーブルと直接の関係がないため、一般的なQuestion
テーブルです。
SQLQuestion
コレクションがないQuestion
テーブルを参照する2つのモデルと、TimeFrameQuestion
タイプのレコードの両方を含むことは可能ですか?
「質問」のために期待している他の関係の種類を知らなくても、答えは少し難しいです。どのようにシンプルか複雑かによって、 'QuestionInterface'が良いアプローチになるかもしれませんし、異なる情報を保持するそれぞれの雄弁なモデルのそれぞれが異なる' Question'モデルを持っています。 – Scopey
@Scopeyは迅速な対応を歓迎します。私は質問の編集であなたのコメントに対処しようとしました。 – OGHaza
* Eloquentモデルは本質的に特定のテーブルに結び付けられていないのですか?*いいえ、それは関係を定義しますので、[protect $ table'](https://laravel.com/)を変更することは考えません。 docs/5.3/eloquent#defining-models)をオンザフライで使用することができます。ちょっとしたことに、PHPではフィールドを動的にクラスに追加することができます。 –