Laravelさまざまな種類のリードの追跡を含むアプリケーションを作成しています。たとえば、Refinance leadとPurchase leadがあります。
リードは多くの情報と機能を共有しますが、すべてではないので、私の考えはLaravelのLead
クラスを拡張するModel
クラスを作成し、次にRefinanceLead
クラスを作成することでした、Lead
クラスを拡張します。
だから私は:
class Lead extends Model
{
// shared lead stuff
}
class RefinanceLead extends Lead
{
// stuff specific to refinance leads
}
私の質問は:
leads
テーブルとrefinance_leads
テーブル?leads
テーブルの何かを利用しますか?ドキュメントを介してこの質問に答えるのに苦労しましたが、これが説明されている場所を見逃した場合は、お知らせください。ありがとう。
1。はい、親モデルにすべての共通機能を持たせることは完全に理にかなっています。
2。基本的に、各Eloquentモデルは、_protected $table
_変数で定義された独自のテーブルからのデータを処理します。親変数をオーバーライドして、すべての異なる子モデルに個別のテーブルを設定できます。 Laravelテーブル名
たとえば、RefinanceLeadインスタンスでgetId()
メソッドを使用すると、refinance_leadテーブルからidが返されます。 PurchadeLeadインスタンスで使用すると、idpurchade_tableが廃止されます
_class Lead extends Model
{
public function getId() {
return $this->id;
}
}
class RefinanceLead extends Lead
{
protected $table = 'refinance_leads';
}
class PurchaseLead extends Lead
{
protected $table = 'purchase_leads';
}
_
3。正確なニーズはわかりませんが、通常はLeadクラスを抽象化して、関連付けないようにすることをお勧めしますそのためのテーブル。共通の機能や関係などを分離するためだけに使用してください...もちろん、コメントで示唆されているように、インターフェースを実装することは常に良い考えです。
_abstract class Lead extends Model implements LeadContract
{
// class body
}
_