Php 论实体知识库
我在运行条令教程和尝试设置实体回购时遇到问题Php 论实体知识库,php,doctrine-orm,orm,Php,Doctrine Orm,Orm,我在运行条令教程和尝试设置实体回购时遇到问题 // _src/entities/User.php /** * @ORM\Entity(repositoryClass="UserRepository") * @Entity @Table(name="users") */ class User { /** * @Id @GeneratedValue @Column(type="integer") * @var int */ protected $id; /** @Column(t
// _src/entities/User.php
/**
* @ORM\Entity(repositoryClass="UserRepository")
* @Entity @Table(name="users")
*/
class User
{
/**
* @Id @GeneratedValue @Column(type="integer")
* @var int
*/
protected $id;
/** @Column(type="string") */
protected $fname;
/** @Column(type="string") */
protected $lname;
public function getId()
{
return $this->id;
}
public function getFname()
{
return $this->fname;
}
public function setFname($fname)
{
$this->fname = $fname;
}
public function getLname()
{
return $this->lname;
}
public function setLname($lname)
{
$this->lname = $lname;
}
}
我现在打电话:
$users = $em->getRepository('User')->getUsersByLastName('user');
var_dump($users);
我的回购协议:
// _src/entities/UserRepository.php
use Doctrine\ORM\EntityRepository;
class UserRepository extends EntityRepository
{
public function getUsersByLastName($lname)
{
$dql = "SELECT u FROM User u WHERE u.lname = ?1 ORDER BY b.created DESC";
return $this->getEntityManager()->createQuery($dql)
->setParameter(1, $lname)
->getResult();
}
}
我正在学习教程,不明白我遗漏了什么。任何援助都将是惊人的。我试图很快了解这一点,真不敢相信我已经遇到了这些问题
以下是我得到的错误:
PHP致命错误:未捕获的BadMethodCallException:未定义的方法“getUsersByLastName”。方法名称必须以findBy或findOneBy开头!在/Users/ks/Documents/PHPStormProjects/dan/_vendor/doctrine/orm/lib/doctrine/orm/EntityRepository.php:226中
堆栈跟踪:
#0/Users/ks/Documents/PHPStormProjects/dan/test.php(27):条令\ORM\EntityRepository->\uu调用('getUsersByLastN…',数组)
#1{main}
在226行的/Users/ks/Documents/PHPStormProjects/dan/_vendor/doctrine/orm/lib/doctrine/orm/EntityRepository.php中,我找到了答案。这确实是一个错误。一旦我将该方法更改为公共函数findByLname($lname),它就工作了。我需要更仔细地查看文档。看起来很奇怪,你不能随意命名方法
我仍然不确定清除缓存错误。我也正确地遵循了该文档。请添加您遇到的任何错误。它有助于缩小问题的范围,有经验的用户可以通过查看错误消息来了解问题所在。无论哪种方法,都比通读所有代码试图找到未知错误要容易得多。是的@JimL,不知道为什么我忘记了。已编辑原始帖子以包含错误和堆栈。请尝试清除元数据缓存我今早已尝试清除所有缓存$cacheDriver=new\Doctrine\Common\Cache\MemcacheCache()$已删除=$cacheDriver->deleteAll();我收到了这个错误:PHP致命错误:未捕获错误:在/Users/ks/Documents/PHPStormProjects/dan/_vendor/doctrine/cache/lib/doctrine/Common/cache/MemcacheCache.PHP中调用null上的成员函数get()。69我不明白为什么这些函数会有这么多问题。我所做的正是他们在文档中所说的。