mysql - Join is not populating the object graph as expected -


i have small misunderstanding in how joining in doctrine2 work. have pretty complex structure in our app , building management screens it.

the area of concern follows:

once of objects 'application' looks this:

class application 

{ /** * list of supported statuses * * @var array */ private $statuses = array('released', 'expired');

/**  *  * @var integer $id  *  * @column(name="id", type="integer", columndefinition="int(10) unsigned")  * @id  * @generatedvalue(strategy="auto")  */ private $id;  /**  * @var string  *  * @column(name="name", type="string", length=100)  */ private $name;  /**  * @var customer  *  * @manytoone(targetentity="libraries\persona\entity\customer")  * @joincolumn(name="customers_id", referencedcolumnname="id", nullable=true, columndefinition="int(10) unsigned")  */ private $customer;  /**  * @var integer  *  * @column(name="partners_id", type="integer", nullable=true)  */ private $partnerid;  /**  * @var string  *  * @column(name="appid", type="string", length=48)  */ private $appid;  /**  * @var string  *  * @column(name="status", type="string", length=15)  */ private $status;  /**  * @var \datetime  *  * @column(name="eventstartdate", type="date")  */ private $eventstartdate;  /**  * @var \datetime  *  * @column(name="eventenddate", type="date")  */ private $eventenddate;  /**  * @var string  *  * @column(name="timezone", type="string", length=45)  */ private $timezone;  /**  * @manytoone(targetentity="libraries\application\entity\applicationtype", inversedby="applications")  * @joincolumn(name="applicationtypes_id", referencedcolumnname="id")  */ private $applicationtype;  /**  * @var integer  *  * @column(name="syncperiod", type="integer", length=10, nullable=true)  */ private $syncperiod;  /**  * @var \datetime  *  * @column(name="lastsync", type="datetime", nullable=true)  */ private $lastsync;  /**  * @var string  *  * @column(name="lastsyncstatus", type="string", length=127, nullable=true)  */ private $lastsyncstatus;  /**  * @var string  *  * @column(name="syncscript", type="string", length=250, nullable=true)  */ private $syncscript = '/var/www/quickstart/application/controllers/scripts/qdissync.php';  /**  * @var integer  *  * @column(name="size", type="integer", length=10)  */ private $size = 400;  /**  * @var text  *  * @column(name="metadata", type="text", nullable=true)  */ private $metadata;  /**  * @var \datetime  *  * @column(name="metadatachangedtime", type="datetime", nullable=true)  */ private $metadatachangedtime;  /**  * @var tinyint  *  * @column(name="issecure", type="smallint", length=1)  */ private $issecure = 2;  /**  * @var integer  *  * @column(name="users_id", type="integer", nullable=true)  */ private $userid;  /**  * @var string  *  * @column(name="singleeventappid", type="string", length=48, nullable=true)  */ private $singleeventappid;  /**  * @var string  *  * @column(name="project_db", type="string", length=50)  */ private $projectdb;  /**  * @var string  *  * @column(name="appname", type="string", length=12)  */ private $appname;  /**  * @var boolean  *  * @column(name="mobilelog", type="boolean")  */ private $mobilelog = false;  /**  * @var tinyint  *  * @column(name="eventtype", type="smallint", length=1)  */ private $eventtype = 1;  /**  * @manytoone(targetentity="libraries\application\entity\project", inversedby="applications")  * @joincolumn(name="project_id", referencedcolumnname="id")  */ private $project;  /**  * @onetomany(targetentity="libraries\platform\entity\platform", mappedby="application")  **/ private $platforms;  /**  * @var snapeventattributes  *  * @onetoone(targetentity="libraries\application\entity\snapeventattributes", mappedby="application")  **/ private $snapeventattributes;  //getters & setters  } 

one of related objects 'snapeventattributes':

class snapeventattributes 

{ /** * * @var integer * * @column(name="id", type="integer", columndefinition="int(11)") * @id * @generatedvalue(strategy="auto") */ private $id;

/**  * @var string  *  * @column(name="directselectid", type="string", length=10, nullable=true)  */ private $directselectid;  /**  * @var string  *  * @column(name="description", type="text", nullable=true)  */ private $description;  /**  * @var string  *  * @column(name="access", type="string", length=10, nullable=false)  */ private $access;  /**  * @var string  *  * @column(name="status", type="string", length=10, nullable=false)  */ private $status;  /**  * @var string  *  * @column(name="snapappversion", type="string", length=5, nullable=true)  */ private $snapappversion;  /**  * @var string  *  * @column(name="pwd", type="string", length=250, nullable=true)  */ private $password;  /**  * @var string  *  * @column(name="thumbnailurl", type="string", length=250, nullable=true)  */ private $thumbnailurl;  /**  * @var string  *  * @column(name="location", type="string", length=45, nullable=true)  */ private $location;  /**  * @onetoone(targetentity="libraries\application\entity\application", inversedby="snapeventattributes")  * @joincolumn(name="applications_id", referencedcolumnname="id", unique=true, nullable=false)  */ private $application;  // getters & setters 

}

in 1 of our work flows need join these 2 bunch of additional joins , got this:

$qb = $this->createquerybuilder('e');     $qb->innerjoin('e.applicationtype', 'et', expr\join::with, 'et.mobileevent = :mobileevent , et.snapapp = :snapapp , et.snapevent = :snapevent');     $qb->innerjoin('e.snapeventattributes', 'attrs');     $qb->innerjoin('e.project', 'p');     $qb->innerjoin('p.applications', 'a');     $qb->innerjoin('a.applicationtype', 'at', expr\join::with, 'at.mobileevent = :vmobileevent , at.snapapp = :vsnapapp , at.snapevent = :vsnapevent');     $qb->leftjoin('e.customer', 'cust');     $qb->leftjoin('p.partner', 'partn');     $qb->setparameters(array(         'mobileevent' => false,         'snapapp' => false,         'snapevent' => true,         'vmobileevent' => false,         'vsnapapp' => true,         'vsnapevent' => false,     ));      return $qb; 

all logic works fine, once execute query:

$qb->getquery()->getresult(); 

the main query getting executed expected automatically doctrine executes bunch of queries snapeventattributes objects:

select t0.id id1, t0.directselectid directselectid2, t0.description description3, t0.access access4, t0.status status5, t0.snapappversion snapappversion6, t0.pwd pwd7, t0.thumbnailurl thumbnailurl8, t0.location location9, t0.applications_id applications_id10 snapeventattributes t0 t0.applications_id = ?  

what missing? reason behavior?

thanks, a.

get repository

controller

$snapevents = $this->em->snapevents ( 'entity\snapeventattributes' )->findall ();     $data ['snapevents '] = $snapevents ; 

then on view

view

foreach ($snapevents $sanpevent) {                  echo "<tr>".                 "<td>" . $sanpevent->getappliction()->getapplicationtype() . "</td>".                  "<td>" . $sanpevent->getappliction()->getcutomer() . "</td>".                 } 

like keep on calling u want since u have joined columns @ model


Comments

Popular posts from this blog

apache - PHP Soap issue while content length is larger -

asynchronous - Python asyncio task got bad yield -

javascript - Complete OpenIDConnect auth when requesting via Ajax -