我有以下(简化的)数据库结构:
桌子book
id
title
桌子page
id
bookId
number
桌子figure
id
pageId
page.bookId
和figure.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>