public function testEagerLoadManyToOne()
 {
     $train = new Train();
     $waggon = new Waggon();
     $train->addWaggon($waggon);
     $this->_em->persist($train);
     // cascades
     $this->_em->flush();
     $this->_em->clear();
     $waggon = $this->_em->find(get_class($waggon), $waggon->id);
     $this->assertNotInstanceOf('Doctrine\\ORM\\Proxy\\Proxy', $waggon->train);
     $this->assertNotNull($waggon->train);
 }
 public function testEagerLoadWithNonNullableColumnsGeneratesInnerJoinOnOwningSide()
 {
     $waggon = new Waggon();
     // It should have a train
     $train = new Train(new TrainOwner("Alexander"));
     $train->addWaggon($waggon);
     $this->_em->persist($train);
     $this->_em->flush();
     $this->_em->clear();
     $waggon = $this->_em->find(get_class($waggon), $waggon->id);
     // The last query is the eager loading of the owner of the train
     $this->assertSQLEquals("SELECT t0.id AS id1, t0.name AS name2, t3.id AS id4, t3.driver_id AS driver_id5, t3.owner_id AS owner_id6 FROM TrainOwner t0 LEFT JOIN Train t3 ON t3.owner_id = t0.id WHERE t0.id IN (?)", $this->_sqlLoggerStack->queries[$this->_sqlLoggerStack->currentQuery]['sql']);
     // The one before is the fetching of the waggon and train
     $this->assertSQLEquals("SELECT t0.id AS id1, t0.train_id AS train_id2, t3.id AS id4, t3.driver_id AS driver_id5, t3.owner_id AS owner_id6 FROM Waggon t0 INNER JOIN Train t3 ON t0.train_id = t3.id WHERE t0.id = ?", $this->_sqlLoggerStack->queries[$this->_sqlLoggerStack->currentQuery - 1]['sql']);
 }
 public function testEagerLoadWithNullableColumnsGeneratesLeftJoinOnBothSides()
 {
     $train = new Train(new TrainOwner("Alexander"));
     $driver = new TrainDriver("Benjamin");
     $train->setDriver($driver);
     $this->_em->persist($train);
     $this->_em->flush();
     $this->_em->clear();
     $train = $this->_em->find(get_class($train), $train->id);
     $this->assertEquals("SELECT t0.id AS id1, t0.driver_id AS driver_id2, t3.id AS id4, t3.name AS name5, t0.owner_id AS owner_id6, t7.id AS id8, t7.name AS name9 FROM Train t0 LEFT JOIN TrainDriver t3 ON t0.driver_id = t3.id INNER JOIN TrainOwner t7 ON t0.owner_id = t7.id WHERE t0.id = ?", $this->_sqlLoggerStack->queries[$this->_sqlLoggerStack->currentQuery]['sql']);
     $this->_em->clear();
     $driver = $this->_em->find(get_class($driver), $driver->id);
     $this->assertEquals("SELECT t0.id AS id1, t0.name AS name2, t3.id AS id4, t3.driver_id AS driver_id5, t3.owner_id AS owner_id6 FROM TrainOwner t0 LEFT JOIN Train t3 ON t3.owner_id = t0.id WHERE t0.id IN (?)", $this->_sqlLoggerStack->queries[$this->_sqlLoggerStack->currentQuery]['sql']);
 }