3

我使用以下代码从我的 MySQL 数据库中获取 book 对象。

$q = $pdo->prepare('SELECT 
                        book_id "id", 
                        book_title "title", 
                        book_slug "slug"
                    FROM book 
                    WHERE book_id=:id');
$q->bindParam(':id', $id, PDO::PARAM_INT);
$q->execute();
$book = $q->fetchObject('Book');

书籍与歌曲有多对多的关系,歌曲有song_id,song_titlesong_lyrics,所以我有一个 book_song 表book_idsong_id

我想得到属于一本书的所有歌曲。有没有一种干净的方法可以在一个查询中做到这一点?

我在这里寻找的是如何以一种干净的方式编写查询,以及如何处理结果以最终得到一个 Book 对象,该对象具有一组 Song 对象,而无需太多代码。

4

1 回答 1

2

gillyspy 建议的 JOIN 将是 ORM 将如何处理此问题,但如果您仅使用 PDO,则您必须自己处理所有映射(以及循环,以及检测何时创建新对象等)。在我看来,您已经跨越了考虑 ORM 框架(例如http://www.phpactiverecord.org/)的门槛。如果你再添加一个一对多的关联,这些映射会让你的大脑受伤。

于 2013-08-12T00:44:12.790 回答