음악 아티스트를 나열하려고합니다. 각 아티스트는 이름, 나이 등 아티스트 테이블에 저장된 기본 정보를 가지고 있습니다. 또한 앨범 테이블 (앨범 이름/앨범 표지 등)에 아티스트 ID를 외래 키로 사용하여 아티스트 테이블을 참조하는 항목이 있습니다.ZF partialLoop과 일대 다 관계 처리
나는 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();
}
을 보기 파일의 내용 :
하지만 예술가 /리스트 artists.phtml에서이 코드:
foreach($this->artist->findDependentRowset('albums') as $album):
// other stuff
endforeach;
내가이 오류를 얻을 : $this->artist
= NULL
의
Fatal error: Call to a member function findDependentRowset() on a non-object
var_dump
. - 난 당신이 artist
보다 더 일반적인 뭔가를 선택하거나 경우를 다시 기억 할 수 있습니다 있도록이가 partialLoop 도우미의 인스턴스에 대해 전역 객체의 키를 변경 믿습니다
<?php $this->partialLoop()->setObjectKey('artist'); ?>
<?php echo $this->partialLoop('yourpartial.phtml', $artists); ?>
참고 :보기 전화에서
감사합니다.이 오류가 발생하는 순간에 – robjmills
이상한 메시지가 표시됩니다. "메시지 : 'FindDependentRowset'이라는 이름의 플러그인이 레지스트리에서 찾을 수 없습니다." – robjmills
오케이 $이 뷰 인스턴스를 참조해야합니다. 내 부분에 큰 "duh"는 편집을 참조하십시오. – prodigitalson