$select = $this->getDrinkTable()->newSelect();
$this->getDrinkTable()->getSelect($select)
->join('drink_type','drink.drink_type_id = drink_type.drink_type_id',array())
->join('drink_brand','drink_brand.drink_brand_id = drink_brand.drink_brand_id',array())
->join('drink_company','drink_company.drink_company_id = drink_brand.drink_company_id',array())
->join('drink_flavor','drink_flavor.drink_id = drink.drink_id',array('calories_for_100g'))
->join('drink_ingredient','drink_ingredient.drink_flavor_id = drink_flavor.drink_flavor_id',array())
->join('drink_flavor_type','drink_flavor.drink_flavor_type_id = drink_flavor_type.drink_flavor_type_id',array('drink_flavor_type_name'))
->join('drink_ingredient_type','drink_ingredient_type.drink_ingredient_type_id = drink_ingredient.drink_ingredient_type_id',array('drink_ingredients'=>new \Zend\Db\Sql\Expression('GROUP_CONCAT(drink_ingredient_type_name)')))
->join('liquid_color','liquid_color.liquid_color_id = drink_flavor.liquid_color_id',array('is_transparent'))
->join('liquid_color_type','liquid_color_type.liquid_color_type_id = liquid_color.liquid_color_type_id',array('liquid_color_type_name'))
->join('alcohol_sum','alcohol_sum.alcohol_sum_id = drink_flavor.alcohol_sum_id',array('alcohol_by_volume'))
->where
->equalTo('drink_flavor_type.drink_flavor_type_name',$drinkFlavor)
->equalTo('drink_company.drink_company_name',$drinkCompany)
->equalTo('drink_brand.drink_brand_name',$drinkBrand)
->equalTo('drink_type.drink_type_name',$drinkType);
$resultSet=$this->getDrinkTable()->selectWith($select);
$result="";
if ($resultSet->count()>0) {
$rows=$resultSet->toArray();
if (count($rows) > 1 || $rows[0]['liquid_color_type_name'] != null ) { //overcome zf bug
$result=json_encode($rows[0]);
}
}