Eloquent ORM について質問があります。この場合、具体的には Laravel 4 で使用されています。基本的なクエリと関係を実行するためにそれを使用しても問題はありませんでしたが、最近、このややユニークなシナリオ/スキーマに困惑しています。
私は3つのテーブルを持っています。それらの構造は現在これです:
post
id - int
post_type - enum(ARTICLE, QUOTE)
user_id - int
created_at - timestamp
updated_at - timestamp
post_type_article
id - int
post_id - int
title - varchar
summary - varchar
url - varchar
post_type_quote
id - int
post_id = int
author = varchar
quote = text
最後に、Eloquent ORM を使用して 1 つのクエリ/関数を実行し、post_type に関係なくすべての投稿とそれぞれのデータを取得したいと思います。
これに関するフィードバックを本当に聞きたいです (私の関係、私のモデルはどうあるべきか)。私の理解では、これはおそらくポリモーフィックな関係です。ここに私のモデルがあります/ありましたが、私はこれが初めてで、これが正しい方向かどうかわかりません:
モデル: Post.php:
<?php
class Post extends Eloquent {
public function postType()
{
return $this->morphTo();
}
}
モデル: PostTypeArticle.php:
<?php
class PostTypeArticle extends Eloquent {
public $timestamps = FALSE;
protected $table = 'post_type_article';
public function post()
{
return $this->morphMany('Post', 'post_type');
}
}
モデル: PostTypeQuote.php:
<?php
class PostTypeQuote extends Eloquent {
public $timestamps = FALSE;
protected $table = 'post_type_quote';
public function post()
{
return $this->morphMany('Post', 'post_type');
}
}
ENUM を外部キーとして使用しているので、明示的に指定する必要があるのでしょうか? とにかく、うまくいけば、私の混乱を見つけて、正しい方向に向けることができます. このコツをつかむまで、事前にご協力いただきありがとうございます。