хранилище сущностей в учении - PullRequest
0 голосов
/ 12 июня 2018

У меня проблемы с прохождением руководства по доктрине и попыткой настроить репозитории сущностей.

// _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: Uncaught BadMethodCallException: Undefined method '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 -> вызов __ ('getUsersByLastN ...', Array)

# 1 {main} добавляется в / Users / ks /Документы / PHPStormProjects / dan / _vendor / doctrine / orm / lib / Doctrine / ORM / EntityRepository.php в строке 226

1 Ответ

0 голосов
/ 12 июня 2018

Я нашел ответ.Это было буквально по ошибке.Как только я изменил метод на публичную функцию findByLname ($ lname), он заработал.Мне нужно рассмотреть документацию более тщательно.Кажется странным, вы не можете называть методы как хотите.

Я все еще не уверен в ошибке очистки кэша.Следуя этой документации, я тоже думал.

...