音楽アーティストをリストしているとしましょう。各アーティストには、名前、年齢などの基本情報がアーティストテーブルに保存されています。また、アルバム テーブル (アルバム名/アルバム カバーなど) にもエントリがあり、アーティスト ID を外部キーとして使用してアーティスト テーブルを参照します。
Model_Artist (Artist.php) ファイルがあります。
class Model_Artist extends Zend_Db_Table_Abstract
{
protected $_name = 'artist';
protected $_dependentTables = array('Model_ArtistAlbums');
public function fetchArtistss()
{
$select = $this->select();
return $this->fetchAll($select);
}
}
および Model_ArtistAlbums (ArtistAlbums.php) ファイルに
class Model_ArtistAlbums extends Zend_Db_Table_Abstract
{
protected $_name = 'albums';
protected $_referenceMap = array(
'Artists' => array(
'columns' => 'alb_art_id',
'refTableClass' => 'Model_Artist',
'refColumns' => 'art_id'
)
);
// etc
}
私のコントローラーで:
public function indexAction()
{
/* THIS WORKS
$art = new Model_Artist();
$artRowset = $art->find(1);
$art1 = $artRowset->current();
$artalbums = $art1->findDependentRowset('Model_ArtistAlbums');
foreach($artalbums as $album){
echo $album->alb_title."<br>";
}
*/
$arts = new Model_Artist();
$this->view->artists = $arts->fetchArtists();
}
ビューファイルで:
$this->partial()->setObjectKey('artist');
echo $this->partialLoop('admin/list-artists.phtml', $this->artists);
ただし、artists/list-artists.phtml の次のコードでは:
foreach($this->artist->findDependentRowset('albums') as $album):
// other stuff
endforeach;
私はこのエラーが発生します:
致命的なエラー: オブジェクト以外でのメンバー関数 findDependentRowset() の呼び出し
=のA。var_dump
_$this->artist
NULL