Php 找不到实体存储库方法

Php 找不到实体存储库方法,php,mysql,symfony,doctrine-orm,Php,Mysql,Symfony,Doctrine Orm,我在方法存储库方面遇到了一些问题。 我想找到所有用户从城市(地址)从省形式的国家。 我认为最好在存储库中划分所有请求方法,以提高可重用性。 我呼吁: 我的方法是FindByprovance: namespace Btp\UserProBundle\Repository; use Doctrine\ORM\EntityRepository; /** * AddressRepository * * This class was generated by the Doctrine ORM. Add

我在方法存储库方面遇到了一些问题。 我想找到所有用户从城市(地址)从省形式的国家。 我认为最好在存储库中划分所有请求方法,以提高可重用性。 我呼吁:

我的方法是FindByprovance:

namespace Btp\UserProBundle\Repository;

use Doctrine\ORM\EntityRepository;

/**
* AddressRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class AddressRepository extends EntityRepository
{

public function findByProvince($province_id)
{
    var_dump("lol");
    $ret = $this->getEntityManager()
        ->createQuery('SELECT a FROM Btp\UserProBundle\Entity\Address a JOIN a.province p WHERE p.id = :val')
        ->setParameter('val', $province_id)
        ->getResult();        

    var_dump($ret);     
    return $ret;
}
地址:

* @ORM\Table(name="address")
* @ORM\Entity(repositoryClass="Btp\UserProBundle\Repository\AddressRepository")
* @ORM\Entity
*/
class Address {//somethink}
“lol”不显示。但我没有任何错误。 另一个问题;您认为在另一个存储库中使用存储库是不好的做法吗(从概念上讲)


谢谢

正如我在评论中提到的,您应该删除
地址
类声明中的第二个
@ORM\Entity

* @ORM\Table(name="address")
* @ORM\Entity(repositoryClass="Btp\UserProBundle\Repository\AddressRepository")
* @ORM\Entity <---- remove this
*/
*@ORM\Table(name=“address”)
*@ORM\Entity(repositoryClass=“Btp\UserProBundle\Repository\AddressRepository”)

*@ORM\Entity请向我展示您实现的类的顶部
findByProvince
方法。我的意思是关于名称空间和类名。首先,习惯调用
getManager()
,因为
getEntityManager()
已被弃用。对于另一个问题,是的,这是一种不好的做法,您应该解释通过在另一个存储库中使用存储库想要实现什么。
*@ORM\Entity(repositoryClass=“Btp\UserProBundle\repository\AddressRepository”)*@ORM\Entity
尝试删除第二个
@ORM\Entity
否,使用另一个存储库并不一定是一种坏做法,只要该实体与您需要的存储库有关系(例如:
CommentRepository::findByUser(User$User)
)。但是,您不应该使一个存储库依赖于另一个存储库。(
CommentRepository::u构造(UserRepository$users)
)Ho!谢谢,就是这样!我移除了第二个实体,它开始工作了!但你确定这是坏习惯吗?(见我的编辑)但为什么这样做是不好的做法?这不是不好的做法,只是错了。通过提供第二个
实体
元数据,您将覆盖第一个。因此,它没有加载您的自定义存储库。我说的是在另一个存储库中使用存储库。我已经理解了这个错误。^^。@JulienLeray你应该解释一下你想在另一个存储库中使用存储库做什么,因为也许有更好的方法:)我一开始就写下我想做的事情。我有UserRepository、AddressRepository、ProvinceRepository和statepository。我希望所有用户谁是在地址谁是在省谁是在国家。更好的方法是在UserRepository中编写一个大方法请求,或者在其他相应的存储库中剪切小方法请求,并将它们用于UserRepository中的方法。我希望我可以理解:)
* @ORM\Table(name="address")
* @ORM\Entity(repositoryClass="Btp\UserProBundle\Repository\AddressRepository")
* @ORM\Entity <---- remove this
*/