次の(簡略化された)データベース構造があります。
テーブルbook
id
title
テーブルpage
id
bookId
number
テーブルfigure
id
pageId
page.bookId
andは、それぞれ主キーandfigure.pageId
を指す外部キーです。book.id
page.id
本にページがなくても、ページに図がなくてもかまいません。
指定された書籍 ID について、単一のSQL クエリで取得したい
- 書籍情報
- それぞれの情報を含むページのリスト
- 各ページの図の数
結果の JSON 表現の例は次のとおりです。
{
"id": 34,
"title": "The title"
"pages": [
{
"id": "44",
"number": 1
"figureCount": 2
},
{
"id": "45",
"number": 2
"figureCount": 5
},
...
]
}
Propel 1.6 でそれは可能で、結果の SQL クエリはどうなるでしょうか?
MySql 5.0 を使用しています。
編集: これは私の (簡略化された) Propel schema.xml です:
<table name="book" phpName="Book">
<column name="id" type="bigint" required="true" primaryKey="true" autoIncrement="true" />
<column name="title" type="varchar" size="512" required="true" />
</table>
<table name="page" phpName="Page" >
<column name="id" type="bigint" required="true" primaryKey="true" autoIncrement="true" />
<column name="book_id" type="bigint" required="true" />
<column name="number" type="integer" required="true" />
<foreign-key foreignTable="book" phpName="Book" refPhpName="Page" onUpdate = "cascade" onDelete = "cascade">
<reference local="book_id" foreign="id" />
</foreign-key>
</table>
<table name="figure" phpName="Figure">
<column name="id" type="bigint" required="true" primaryKey="true" autoIncrement="true" />
<column name="page_id" type="bigint" required="true" />
<foreign-key foreignTable="page" phpName="Page" refPhpName="Figure" onUpdate = "cascade" onDelete = "cascade">
<reference local="page_id" foreign="id"/>
</foreign-key>
</table>