我有两个实体:
namespace Api\Payment\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* PaySystemField
*
* @ORM\Table(name="paysystem_field")
* @ORM\Entity
*/
class PaySystemField
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=50, nullable=false)
*/
private $name;
...
}
和
namespace Api\Payment\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* PaySystemFieldValue
*
* @ORM\Table(name="paysystem_field_value")
* @ORM\Entity
*/
class PaySystemFieldValue
{
...
/**
* @var \Api\Payment\Entity\PaySystemField
*
* @ORM\ManyToOne(targetEntity="\Api\Payment\Entity\PaySystemField", fetch="EAGER")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="paySystemFieldId", referencedColumnName="id")
* })
*/
private $paySystemField;
...
}
我的DQL请求:
$fieldsValues = $this->objectManager
->createQuery('
SELECT psfv,psf FROM Api\Payment\Entity\PaySystemFieldValue psfv
JOIN Api\Payment\Entity\PaySystemField psf WITH (psfv.paySystemField=psf.id)
WHERE psfv.payment=:payment
')
->setParameter('payment', $this->payment)
->setFetchMode('Api\Payment\Entity\PaySystemFieldValue', 'paySystemField', 'EAGER')
->getResult();
此查询返回PaySystemFieldValue,其中paySystemField关系已初始化,但$ fieldsValues包含PaySystemFieldValue实体和PaySystemField。我怎么能这样做$ fieldsValues只包含PaySystemFieldValue实体,并初始化了paySystemField关系?
答案 0 :(得分:1)
尝试使用此查询:
$fieldsValues = $this->objectManager->createQuery('SELECT psfv FROM Api\Payment\Entity\PaySystemFieldValue psfv WHERE psfv.payment=:payment')->setParameter('payment', $this->payment)->getResult();
或
$this->getServiceLocator()->get('doctrine.entitymanager.orm_default')->getRepository("Api\Payment\Entity\PaySystemFieldValue")->findBy(array('payment' => $this->payment));