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我不明白为什么这些函数会有这么多问题。我所做的正是他们在文档中所说的。