找不到实体存储库方法

时间:2014-04-17 09:16:10

标签: php mysql symfony doctrine-orm

我在方法库中遇到了一些麻烦。 我想找到来自省(地区)的所有用户来自省份的州。 我认为在存储库中划分所有请求方法以获得更多可重用性是很好的。 我打电话给:

$addr_repo = $this->getEntityManager()
                 ->getRepository('BtpUserProBundle:Address');
$address[$key] = $addr_repo->findByProvince($province->getId());

和我的方法findByProvince:

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”不显示。但我没有任何错误。 另一个问题;您是否认为在另一个存储库中使用存储库(从概念上讲)是不好的做法

由于

1 个答案:

答案 0 :(得分:2)

如我的评论中所述,您应该删除@ORM\Entity类声明中的第二个Address

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