2

I can't get results in view from query.

Here is controller method:

public function indexAction()
{
    $this->layout()->setVariable('page_title', 'Страницы');
    $pages = $this->getServicePage()->getPageList($type = 1);
    $viewModel = new ViewModel(['pages' => $pages]);
    return $viewModel;
}

I use Service:

public function getPageList($type){
    $language = $this->entityManager
        ->getRepository('\ApanelLanguage\Entity\LanguageCommon')
        ->findOneBy(['LanguageMain' => 1]);

    $pages = $this->entityManager
        ->getRepository('\ApanelPage\Entity\PageCommon')
        ->getPagesList($type, $language->getLanguageId());
    return $pages;
}

And here is Reporitory code:

public function getPagesList($type, $language)
{
    $qb = $this->_em->createQueryBuilder()
        ->select(['u','p'])
        ->from('ApanelPage\Entity\PageCommon', 'u')
        ->innerJoin('ApanelPage\Entity\PageData','p', 'WITH', 'u.PageId = p.PageCommonId')
        ->where('u.PageTypeId = :type')
        ->andWhere('p.PageLanguageId = :language')
        ->setParameter('type', $type)
        ->setParameter('language', $language);
    return $qb->getQuery()->getResult();
} 

If I try to get results in view

<?php  $i=0;
foreach ($this->pages as $page) {
    $i++;
    echo $id       = $page->getPageId();
    echo $cid       = $page->getPageCommonId();
} ?>

I get an error

Fatal error: Call to undefined method ApanelPage\Entity\PageCommon::getPageCommonId() in /home/xtadmin/localhost/test.zend/www/module/ApanelPage/view/apanel-page/page/index.phtml on line 19

I tried different variants, but it tries to find methods in wrong entities.

P.S. If it try this:

echo "<pre>";
var_dump($pages);
echo "</pre>";

My firefox hang up, and I must kill the process.

UPDATE Entity/PageData.php

...
 /**
 * @var Pagecommon
 * @ORM\ManyToOne(targetEntity="ApanelPage\Entity\PageCommon")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="PageCommonId", referencedColumnName="PageId")
 * })
 */
protected $PageCommonId;
...
public function getPageCommonId() { return $this->PageCommonId; }
public function setPageCommonId($PageCommonId) { $this->PageCommonId = (int)$PageCommonId;}
...

1 Answers1

0

You write that the getPageCommonId method is in your PageData entity but the error is because it tries to find this method inside your PageCommon entity:

Call to undefined method ApanelPage\Entity\PageCommon::getPageCommonId()

I think you have the method in the wrong place.

Wilt
  • 41,477
  • 12
  • 152
  • 203