Php 为什么我能';连接两个表时,无法在原则中获取实体
以下是我的实体类别模型的一些信息: 设备细节实体Php 为什么我能';连接两个表时,无法在原则中获取实体,php,sql-server,doctrine-orm,zend-framework2,Php,Sql Server,Doctrine Orm,Zend Framework2,以下是我的实体类别模型的一些信息: 设备细节实体 namespace Application\Entity; use Doctrine\ORM\Mapping as ORM; /** * Application\Entity\EquipmentDetail * * @ORM\Table(name="EQUIPMENT_DETAIL") * @ORM\Entity */ class EquipmentDetail extends \Application\Entity\Base\BaseEnt
namespace Application\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Application\Entity\EquipmentDetail
*
* @ORM\Table(name="EQUIPMENT_DETAIL")
* @ORM\Entity
*/
class EquipmentDetail extends \Application\Entity\Base\BaseEntity
{
/**
* @var integer $equipmentDetailId
*
* @ORM\Column(name="EQUIPMENT_DETAIL_ID", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $equipmentDetailId;
/**
* @var string $description
*
* @ORM\Column(name="DESCRIPTION", type="text", nullable=true)
*/
private $description;
/**
* @var integer $active
*
* @ORM\Column(name="ACTIVE", type="integer", nullable=true)
*/
private $active;
/**
* @var Application\Entity\Equipment
*
* @ORM\ManyToOne(targetEntity="Application\Entity\Equipment")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="EQUIPMENT_ID", referencedColumnName="EQUIPMENT_ID")
* })
*/
private $equipment;
/**
* @var Application\Entity\EquipmentProperty
*
* @ORM\ManyToOne(targetEntity="Application\Entity\EquipmentProperty")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="EQUIPMENT_PROPERTY_ID", referencedColumnName="EQUIPMENT_PROPERTY_ID")
* })
*/
private $equipmentProperty;
我也有
\Application\Entity\Base\BaseEntity
及
所有模型类都是返回真实体类,在其他情况下工作良好
在其他情况下,它可以正常工作,例如:
$propertyType = $this->getTypePropertyModel()->createQueryBuilder('t')->join('t.equipmentType', 'eq')
->where('eq.equipmentTypeId=:typeId')->setParameter('typeId', $typeId)->getQuery()->getResult();
但当我创建querybuilder并连接两个表时,我无法得到结果。我尝试了以下多种方法:
$detail = $this->getEquipmentDetailModel()->getEntityManager()
->createQuery('SELECT d FROM \Application\Entity\EquipmentDetail d '
. 'JOIN d.equipment e JOIN d.equipmentProperty ep '
. 'WHERE (e.equipmentId = 3130'
. 'AND ep.equipmentPropertyId =2'
. '')
->getResult();
或
或
或
我得到了一个错误
"Fatal error: Call to a member function getDescription() on a non-object in...."
调用$detail->getDescription()时。
我确信,我在数据库中记录了设备的详细信息,信息如下:
EQUIPMENT_DETAIL_ID : 45
EQUIPMENT_ID : 3130
EQUIPMENT_PROPERTY_ID : 2
DESCRIPTION :Olala
ACTIVE : 1
当我使用:
$detail = $this->getEquipmentDetailModel()->find(45);
请告诉我为什么我不能得到结果,或者如果我没有提供足够的信息
$detail = $this->getEquipmentDetailModel()->createQueryBuilder('d')
->innerJoin('d.equipment', 'e')
->innerJoin('d.equipmentProperty', 'ep')
->where('e.equipmentId = :ID')
->andWhere('ep.equipmentPropertyId =:epID')
->setParameter('ID', 3130)
->setParameter('epID', 2)
->getQuery()->setMaxResults(1)->getResult();
"Fatal error: Call to a member function getDescription() on a non-object in...."
EQUIPMENT_DETAIL_ID : 45
EQUIPMENT_ID : 3130
EQUIPMENT_PROPERTY_ID : 2
DESCRIPTION :Olala
ACTIVE : 1
$detail = $this->getEquipmentDetailModel()->find(45);