Laravelでの多型関係の通常の使用は、Post-User-Imageの例でかなりうまくカバーされます。インターフェイスを使用するときの関係を定義する方法
Article/ContentA/ContentBの関係を言うと、関係を実装するためのきれいな方法を見つけようとしています。
articles
id
content_1
id
content_2
id
user_defined_content_n
id
contentables
article_id
contentable_id
contentable_type // content_2, user_defined_content_n
コンテンツクラスは、必ずしもそう多くMorphedByMany
関係で記事のモデルを定義し、記事で知られていないが、私はこれをしたいかではありません。
おそらく私はクラスをうまく構成していません。可能であれば、Content
クラスにモーフするContentEntity
クラスを作成することができますが、これを避けたいと考えています。
おそらくこれが私の問題をよりよく説明します。
class Article extends Model {
public function contentEntities() {
return $this->hasMany(ContentEntity::class);
}
}
class ContentEntity extends Model {
public function contentable() {
return $this->morphTo();
}
}
class Content extends Model {
public function contentEntity() {
return $this->morphOne(ContentEntity::class, 'contentable');
}
}
class Video extends Model {
public function contentEntity() {
$this->morphOne(ContentEntity::class, 'contentable');
}
}
これは機能しますが、私にとっては非常に汚れているようです。私はそれがContentEntity
の親を管理するためにあまりにも多くの開発者のオーバーヘッドを追加すると思う。
編集: 誰かがよりよい解決策を提供しない限り、私はContentEntity
Sを使用してEAVスタイル溶液で行きました。
あなたの 'article'、' contentA'と 'contentB'を投稿してください。 –
@MohamedKawsara私が追加したテーブルが私の質問を明確にするのに役立つと思います。 – Sturm
私はそれがプログラマ交換に移動したとフラグを立てましたので、それは少し話題ですから – Sturm