Hello,
To achieve multiple joining I use $this->modelsManager->createBuilder();
It's a powerfull mechanism to create complex queries using PHQL.
I have no idea how your tables looks, but in my case I have a situation to show articles with a ManytoMany relation on contacts and the contacts are related to a country.
To show all articles related to a country, I have a query like this.
$articles=$this->modelsManager->createBuilder()
->columns(array('Articles.id', 'Articles.listtitle', 'Articles.listdescription', 'Articles.filename', 'Articles.adddate', 'Articles.modifydate', 'Articles.publishdate', 'Articles.expiredate', 'Users.username', 'Users.realname', 'Images.path', 'Images.thumbnail'))
->from('Articles')
->innerJoin('Categoryarticles', 'Articles.id=Categoryarticles.articleid')
->innerJoin('Categories', 'Categoryarticles.categoryid=Categories.id')
->innerJoin('Contactarticles', 'Articles.id=Contactarticles.articleid')
->innerJoin('Contacts', 'Contactarticles.contactid=Contacts.id')
->innerJoin('Countries', 'Contacts.visitingcountryid=Countries.id OR Contacts.postofficeboxcountryid=Countries.id')
->innerJoin('Users', 'Articles.publishid=Users.id')
->leftJoin('Images', 'Articles.iconid=Images.id')
->where('Countries.id=:id:',array('id' => $country->id))
->andWhere('Articles.languagekey=:languagekey:',array('languagekey' => $this->languagekey()))
->andWhere('Articles.trash=:trash:',array('trash' => 'no'))
->andWhere('Articles.publishdate<=:date:',array('date' => date('Y-m-d')))
->andWhere('Articles.expiredate>:date:',array('date' => date('Y-m-d')))
->andWhere('Categories.trash=:trash:',array('trash' => 'no'))
->andWhere('Categories.languagekey=:languagekey:',array('languagekey' => $this->languagekey()))
->andWhere('Contacts.trash=:trash:',array('trash' => 'no'))
->andWhere('Contacts.languagekey=:languagekey:',array('languagekey' => $this->languagekey()))
->andWhere('Users.trash=:trash:',array('trash' => 'no'))
->andWhere('Users.languagekey=:languagekey:',array('languagekey' => $this->languagekey()))
->groupBy(array('Articles.id'))
->orderBy('Articles.listtitle ASC')
->getQuery()
->execute();
Hopefully it helps you a bit to create your own queries.