3

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 を外部キーとして使用しているので、明示的に指定する必要があるのでしょうか? とにかく、うまくいけば、私の混乱を見つけて、正しい方向に向けることができます. このコツをつかむまで、事前にご協力いただきありがとうございます。

4

1 に答える 1