实体

时间:2019-03-29 00:51:20

标签: symfony doctrine

我想在实体内部使用实体管理器,但不知道用法。

use Doctrine\Common\Persistence\ObjectManagerAware;
use Doctrine\Common\Persistence\ObjectManager;
use Doctrine\Common\Persistence\Mapping\ClassMetadata;

use SomeBundle\Entity\Boarding;
use SomeBundle\Entity\User;


class Entity extends ApiUserEntity implements ObjectManagerAware
{
     private $em;
     public function ___construct(User $user)
     {
         $this->board = $this->getData(123);
     }
     public function injectObjectManager(ObjectManager $objectManager, ClassMetadata $classMetadata)
     {
           $this->em = $objectManager;

     }
     private function getData($leadId)
     {
          //return gettype($this->em); //return null
            $repository =$this->em->getRepository(Boarding::class);
            $query = $repository->createQueryBuilder('b')
               ->where('b.lead = :lead')
               ->setParameter('lead', $leadId)
               ->getQuery();
             $boards = $query->getResult();
             return $boards;
      }  
}

使用此代码会使我出错

     Call to a member function getRepository() on null"

实体管理器也为空

      //return gettype($this->em); //return null

您有使用示例的主意吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试创建一个像 here 这样的存储库。只需添加

 * @ORM\Entity(repositoryClass="App\Repository\EntityRepository")

或者到YAML,Xml取决于你的配置然后创建存储库文件。喜欢这个:

// src/AppBundle/Repository/ProductRepository.php
namespace AppBundle\Repository;

use Doctrine\ORM\EntityRepository;

class ProductRepository extends EntityRepository
{
  public function findAllOrderedByName()
  {
      return $this->getEntityManager()
          ->createQuery(
            'SELECT p FROM AppBundle:Product p ORDER BY p.name ASC'
          )
          ->getResult();
  }
}