0

私はプロジェクトでphp-activerecordを試していますが、以前はLithiumとCodeIgniterで使用していましたが、かなり簡単なはずだと思っていることに固執しています。しかし、私は単に頭を包むことができません。

だから、私は2つのテーブルを持っています:

post       |id  |title  |content
           ----------------------
           |1   |Test   |Lorem...

と:

post_meta  |id  |post_id  |publish_date
           ----------------------------
           | 1  |1        |2013-03-23

titleさて、 postテーブルとpublish_datepost_meta-tableのを一致させたい場合、最も単純で最もエレガントな方法でどのように処理しますか?

現在のところ、2つの別々のクエリを実行する必要があるようです。最初にメタテーブルで正しいpublish_dateを使用して投稿を抽出し、次に一致するタイトルが見つかるまでそのクエリをループします。または、リレーションシップ($has_oneおよび$belongs_to)を使用することもできますが、そうすれば、ポストデータを抽出するときに「逆の方法」でそれを実行しているように感じます($postMetas->post->content)。

アイデアや解決策、あるいはこれを可能な限りシンプルでエレガントにするORMの代替案を自由に考えてください。

4

1 に答える 1

2

ファインダーで結合された構造を使用するだけです。マニュアルのこの部分をチェックしてください。

基本的に、既知の接続を使用して参加し、それらを返されるもののベースとして使用できると書かれています。そのページの本の例は非常に優れています。以下を参照してください。

# fetch all books joining their corresponding author
 7 $book = Book::all(array('joins' => array('author')));
 8 # sql => SELECT `books`.* FROM `books`
 9 #      INNER JOIN `authors` ON(`books`.author_id = `authors`.id)
于 2013-03-24T14:20:28.360 に答える