2013-05-13 62 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/)的意義。如果你再加一個一對多的關聯,映射會讓你的大腦受傷。