在PHP MySQL查询中获取外键对象的干净方法

时间:2013-05-13 14:14:05

标签: php mysql sql pdo many-to-many

我使用以下代码从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_idsong_titlesong_lyrics,因此我有一个带有book_id和{的book_song表格{1}}。

我想把所有的歌都归属于一本书。有一种干净的方法可以在一个查询中执行此操作吗?

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

1 个答案:

答案 0 :(得分:1)

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