2013-05-13 99 views
2

我使用以下代码从我的MySQL数据库中获取图书对象。在PHP中获取外键对象的简洁方法MySQL查询

$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_song表book_idsong_id

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

我正在寻找在这里是如何写在一个干净的方式查询以及如何处理结果与有没有太多的代码宋对象的数组一个Book对象就结了。

+0

嗯....你的意思是一个单一的查询来检索属于一本书的所有歌曲......为什么你不使用联合声明? – Hackerman 2013-05-13 14:40:50

+0

与PDO使用使用fetchall创建关联数组http://php.net/manual/en/pdostatement.fetchall.php – gillyspy 2013-05-13 15:05:20

+0

你肯定不是意味着一个'INNER JOIN'? – hjpotter92 2013-05-13 15:06:47

回答

1

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