我无法从查询中获得结果。
这是控制器方法:
public function indexAction()
{
$this->layout()->setVariable('page_title', 'Страницы');
$pages = $this->getServicePage()->getPageList($type = 1);
$viewModel = new ViewModel(['pages' => $pages]);
return $viewModel;
}
我使用服务:
public function getPageList($type){
$language = $this->entityManager
->getRepository('ApanelLanguageEntityLanguageCommon')
->findOneBy(['LanguageMain' => 1]);
$pages = $this->entityManager
->getRepository('ApanelPageEntityPageCommon')
->getPagesList($type, $language->getLanguageId());
return $pages;
}
这是记者代码:
public function getPagesList($type, $language)
{
$qb = $this->_em->createQueryBuilder()
->select(['u','p'])
->from('ApanelPageEntityPageCommon', 'u')
->innerJoin('ApanelPageEntityPageData','p', 'WITH', 'u.PageId = p.PageCommonId')
->where('u.PageTypeId = :type')
->andWhere('p.PageLanguageId = :language')
->setParameter('type', $type)
->setParameter('language', $language);
return $qb->getQuery()->getResult();
}
如果我尝试在视图中获得结果
<?php $i=0;
foreach ($this->pages as $page) {
$i++;
echo $id = $page->getPageId();
echo $cid = $page->getPageCommonId();
} ?>
我有一个错误
致命错误:致电未定义的方法 ApanelPage Entity PageCommon :: getPageCommonId()in /HOME/XTADMIN/LOCALHOST/TEST.ZEND/www/module/apanelpage/apanelpage/apanel-page/page/page/index.phtml 在第19行
我尝试了不同的变体,但它试图在错误的实体中找到方法。
P.S。如果尝试此尝试:
echo "<pre>";
var_dump($pages);
echo "</pre>";
我的Firefox挂断了,我必须杀死该过程。
更新实体/pagedata.php
...
/**
* @var Pagecommon
* @ORMManyToOne(targetEntity="ApanelPageEntityPageCommon")
* @ORMJoinColumns({
* @ORMJoinColumn(name="PageCommonId", referencedColumnName="PageId")
* })
*/
protected $PageCommonId;
...
public function getPageCommonId() { return $this->PageCommonId; }
public function setPageCommonId($PageCommonId) { $this->PageCommonId = (int)$PageCommonId;}
...
您写出getPageCommonId
方法在您的PageData
实体中,但错误是因为它试图在PageCommon
实体中找到此方法:
致电未定义的方法
ApanelPageEntityPageCommon::getPageCommonId()
我认为您的方法在错误的位置。