I use this code to execute native sql query in zf2 application with doctrine2.
I use this code
$rsm = new ResultSetMapping();
$rsm->addEntityResult('Admin\Entity\SkillsExperience', 'skexp');
$rsm->addFieldResult('skexp', 'id', 'id');
$rsm->addFieldResult('skexp', 'idExperience', 'id_experience');
$rsm->addFieldResult('skexp', 'idSkillsDetails', 'id_skills_details');
$rsm->addJoinedEntityResult('Admin\Entity\SkillsDetails', 'skd','skexp','idSkillsDetails');
$rsm->addFieldResult('skd','description','description');
$rsm->addFieldResult('skd','idSkill','id_skill');
$sql = "
SELECT
skexp.id,
skexp.id_experience,
skexp.id_skills_details,
skd.description,
skd.id_skill
FROM skills_experience skexp
INNER JOIN skills_details skd
ON skd.id = skexp.id_skills_details
WHERE skexp.id_experience = $id_experience
ORDER BY skd.id_skill
";
$query = $this->getEntityManager()
->createNativeQuery($sql, $rsm)
->setParameter(1,$id_experience);
echo $query->getSQL();
$skexp = $query->getResult();
var_dump($skexp);
this is result
array(1) { [0]=> object(Admin\Entity\SkillsExperience)#471 (3) { ["id":"Admin\Entity\SkillsExperience":private]=> string(1) "1" ["idExperience":"Admin\Entity\SkillsExperience":private]=> NULL ["idSkillsDetails":"Admin\Entity\SkillsExperience":private]=> object(Admin\Entity\SkillsDetails)#473 (3) { ["id":"Admin\Entity\SkillsDetails":private]=> NULL ["description":"Admin\Entity\SkillsDetails":private]=> string(18) "skillsname" ["idSkill":"Admin\Entity\SkillsDetails":private]=> NULL } } }
I expect 'Admin\Entity\SkillsDetails' in idSkillsDetails, but it is not
I can't obtain
skd.description, skd.id_skill
how can I?
thanks