Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我能';连接两个表时,无法在原则中获取实体_Php_Sql Server_Doctrine Orm_Zend Framework2 - Fatal编程技术网

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);