【发布时间】:2018-06-11 21:47:55
【问题描述】:
我在运行学说教程并尝试设置实体存储库时遇到问题。
// _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): Doctrine\ORM\EntityRepository->__call('getUsersByLastN...', Array)
#1 {主要} 在第 226 行抛出 /Users/ks/Documents/PHPStormProjects/dan/_vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php
【问题讨论】:
-
请添加您遇到的任何错误。它有助于缩小问题范围,有经验的用户可能会通过查看错误消息来了解问题所在。这比通读所有代码试图找到未知错误要容易得多
-
是的@JimL,不知道为什么我忘记了。编辑原始帖子以包含错误和堆栈。
-
尝试清除元数据缓存
-
我今天早上尝试清除所有缓存。 $cacheDriver = new \Doctrine\Common\Cache\MemcacheCache(); $deleted = $cacheDriver->deleteAll();我收到此错误:PHP 致命错误:未捕获的错误:在 /Users/ks/Documents/PHPStormProjects/dan/_vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcacheCache 中调用 null 上的成员函数 get()。 php:69 我不明白为什么这些问题有这么多。我正在按照他们在文档中所说的去做。
标签: php doctrine-orm orm