致命错误:调用未定义的方法 MyModule\Entity\MyEntity::findAll() 学说 orm 2 zf2
Posted
技术标签:
【中文标题】致命错误:调用未定义的方法 MyModule\\Entity\\MyEntity::findAll() 学说 orm 2 zf2【英文标题】:Fatal error: Call to undefined method MyModule\Entity\MyEntity::findAll() doctrine orm 2 zf2致命错误:调用未定义的方法 MyModule\Entity\MyEntity::findAll() 学说 orm 2 zf2 【发布时间】:2015-11-04 10:15:26 【问题描述】:我从学说开始几个月了,无法解决这个问题。
详细介绍
composer.json
"name" : "zendframework/skeleton-application",
"description" : "Skeleton Application for ZF2",
"require" :
"php" : ">=5.3.3",
"zendframework/zendframework" : "~2.4",
"doctrine/doctrine-orm-module" : "0.9.2",
"doctrine/doctrine-module" : "0.9.0",
"zendframework/zend-developer-tools" : "0.0.2",
"bjyoungblood/BjyProfiler" : "v1.1.0"
,
"license" : "BSD-3-Clause",
"keywords" : [ "framework", "zf2" ],
"homepage" : "http://framework.zend.com/"
application.config.php
<?php
return array(
'modules' => array(
'ZendDeveloperTools',
'DoctrineModule',
'DoctrineORMModule',
'BjyProfiler',
'Application',
'Publicacion',
),
'module_paths' => array(
'./module',
'./vendor','./module','./module',
),
'config_glob_paths' => array(
'config/autoload/,*.global,local.php',
),
),
);
module.config.php
namespace Publicacion;
return array(
'controllers' => array(
'invokables' => array(
'Publicacion\Controller\Publicacion' => 'Publicacion\Controller\PublicacionController',
'Publicacion\Controller\Categoria' => 'Publicacion\Controller\CategoriaController',
),
),
'router' => array(
'routes' => array(
'publicacion' => array(
'type' => 'Literal',
'options' => array(
// Change this to something specific to your module
'route' => '/publicacion',
'defaults' => array(
// Change this value to reflect the namespace in which
// the controllers for your module are found
'__NAMESPACE__' => 'Publicacion\Controller',
'controller' => 'Publicacion',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
// This route is a sane default when developing a module;
// as you solidify the routes for your module, however,
// you may want to remove it and replace it with more
// specific routes.
'default' => array(
'type' => 'Segment',
'options' => array(
'route' => '/[:controller[/:action]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
),),),
'categoria' => array(
'type' => 'segment',
'options' => array(
// Change this to something specific to your module
'route' => '/categoria',
'defaults' => array(
// Change this value to reflect the namespace in which
// the controllers for your module are found
'__NAMESPACE__' => 'Publicacion\Controller',
'controller' => 'Categoria',
'action' => 'index',
),),),),),),),
'view_manager' => array(
'template_path_stack' => array(
'Publicacion' => __DIR__ . '/../view',
),
'display_exceptions' => true,
),
'doctrine' => array(
'driver' => array(
__NAMESPACE__ . '_driver' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
'cache' => 'array',
'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity')
),
'orm_default' => array(
'drivers' => array(
__NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver'
)))));
控制器
namespace Publicacion\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Publicacion\Entity\Publicacion;
use Doctrine\ORM\EntityManager;
class PublicacionController extends AbstractActionController
public function getEntityManager()
return $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
public function indexAction()
//var_dump($this->getEntityManager());
$publicaciones = $this->getEntityManager()->getRepository('Publicacion\Entity
\Publicacion')->findAll(); // <-- HERE
return array('publicaciones' => $publicaciones);
index.phtml
<table>
<?php
foreach ($publicaciones as $publicacion)
echo "<tr>";
echo "<td>".$publicacion->getId()."</td>";
echo "<td>".$publicacion->getTitulo()."</td>";
echo "</tr>";
?>
</table>
文字错误是:
致命错误:调用未定义的方法 Publicacion\Entity\Publicacion::findAll() 在 C:\xampp\htdocs\MyProyect\module\Publicacion\src\Publicacion\Controller\PublicacionController.php 第 29 行
公共实体
namespace Publicacion\Entity;
use Publicacion\Entity\Categoria;
use Publicacion\Entity\Referencia;
use Doctrine\ORM\Mapping as ORM;
use Zend\Form\Annotation;
use Doctrine\Common\Collections\Collection;
use Zend\Db\Sql\Ddl\Column\Boolean;
/**
*
* @author Darwin
*
* Publicacion
*
* @ORM\Table(name="publicacion")
* @ORM\Entity(repositoryClass="Publicacion\Entity\Publicacion")
* @Annotation\Name("Publicacion")
* @Annotation\Hydrator("Zend\Stdlib\Hydrator\ClassMethods")
*/
class Publicacion
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
* @Annotation\Exclude()
* @var int|null
*/
private $id;
/**
* @ORM\Column(type="string")
*
* @var string
*/
private $titulo;
/**
* @ORM\Column(type="string")
* @var string
*/
private $introduccion;
/**
* @ORM\Column(type="string")
* @var string
*/
private $contenido;
// relación muchos a muchos una referencia puede referenciar a muchas publicaciones y viserversa
/**
* @ORM\ManyToMany(targetEntity="Referencia", inversedBy="publicaciones")
* @ORM\JoinTable(name="publicacion_referencia")
* @var Collection
*/
private $referencias;
// relación muchos a muchos, una categoria puede referenciar a muchas publicaciones y viserversa
/**
* @ORM\ManyToMany(targetEntity="Categoria", inversedBy="publicaciones")
* @ORM\JoinTable(name="publicacion_categoria")
* @var Collection
*/
private $categorias;
//****** MODULO COMENTARIO **********
// relación uno a muchos ( una publicación puede referenciar muchos comentarios / un comentario solo puede referenciar una publicación o otro comentario)
/**
*-ORM\OneToMany(targetEntity="Comentario", mappedBy="publicacion")
*-var Collection
*/
//private $comentarios;
/**
* @ORM\Column(type="datetime")
* @var \DateTime
*/
private $fechaCreado;
/**
* @ORM\Column(type="datetime")
* @var \DateTime
*/
private $fechaModificado;
/**
* @ORM\Column(type="boolean")
* @var Boolean
*/
private $publicado;
// property methods ....
?>
谁能帮忙?
【问题讨论】:
请包含您的实体。尤其是 EntityRepository 注释。 包括了 Publicacion Entity ,我想我理解这个问题...... 问题是注释 * @ORM\Entity(repositoryClass="Publicacion\Entity\Publicacion") ,我没有使用自定义存储库,并且指示与 repos 相同的实体...现在可以使用正确,将注释更改为 * @ORM\Entity 。非常感谢您的帮助! 【参考方案1】:Bram Gerritsen,你的评论我可以看到错误,问题是注释
* @ORM\Entity(repositoryClass="Publicacion\Entity\Publicacion")
,我没有使用自定义存储库,并且指示与 repos 相同的实体...现在可以正常工作,请更改注释
* @ORM\Entity
非常感谢您的帮助!
【讨论】:
以上是关于致命错误:调用未定义的方法 MyModule\Entity\MyEntity::findAll() 学说 orm 2 zf2的主要内容,如果未能解决你的问题,请参考以下文章
致命错误:调用未定义的方法 CookieComponent::del()
Woocommerce 出现致命错误:未捕获的错误:调用未定义的方法 WooCommerce::get_image_size()
Laravel 4:PHP 致命错误:调用未定义的方法 Blueprint::int()
致命错误:在 joomla 3 中调用未定义的方法 JController::getInstance()