2009-07-29 3 views
1

Zend Frameworkは比較的新しいものです。Zend Frameworkを使用したテーブルへの結合PHP

私はZend_Tableの使い方を理解しており、そのクラスに関連付けられたテーブルのZend関数を使用してデータを取得できます。例えば

私はビデオのテーブルを持っており、別のテーブルに私はビデオと何カテゴリ、それがであるとの間の関連性を持っている

イム少し困惑してどのようにアクティブな枠組みの中で、次のように選択:

SELECT * FROM videocategory WHERE categorycategory_id = 3 AND videoid = categoryvideo_id

アドバイスは素晴らしいでしょう。

ありがとうございました。

答えて

2
$db->select()->from('video')->joinInner('category','video.id = category.video_id')->where('category.category_id = ?',3) 

ところで、間違ったデータベースデザインがあるようです。ビデオテーブルにcategory_id(1ビデオ - > 1カテゴリの場合)または接続テーブル(M:N)が必要ですが、ビデオIDをカテゴリに格納するのは間違っているようです。

+0

。 $ this-> getDbTable() - > select() - >ここで( 'group_id =?'、$ group_id) - > joinInner( 'category'、 'video.id = category.video_id') - > selectIndexここで( 'category.category_id =?'、3); $ result = $ this-> getDbTable() - > fetchRow($ sql); – wenbert

+0

ありがとうございます;ありがとうございます; –

1

私はZend_Db_Selectを使用します。

$select = $this->db->select()->from(array('v' => 'video')) 
        ->join(array('c' => 'category'),'v.id = c.video_id') 
        ->where('c.category_id = ?', 3); 
    print_r($select->__toString()); 

出力:FYIわずか

SELECT `v`.*, `c`.* FROM `video` AS `v` INNER JOIN `category` AS `c` ON v.id = c.video_id WHERE (c.category_id = 3) 
+0

この例のカテゴリテーブルから列を読み取る方法を教えてください。 Zend_Db_Table_AbstractがreferenceMapを定義すると予想されるのですか、特定のカテゴリの列名の配列を渡すことはできますか? – emeraldjava

関連する問題