private function setDataAd(Request $request, EntityManager $em, Ad $ad) { $user = $this->container->get('security.context')->getToken()->getUser(); $json_ad = $request->get('ad'); $json_decode_ad = json_decode($json_ad); $city = $em->getRepository("AppBundle:City")->find($json_decode_ad->city); $district = $em->getRepository("AppBundle:District")->find($json_decode_ad->district); $category = $em->getRepository("AppBundle:Category")->find($json_decode_ad->categories); if ($category->getFree() == 1) { $ad->setStatus(2); } $ad->setTitle($json_decode_ad->title); $ad->setDescription($json_decode_ad->description); $ad->setPrice($json_decode_ad->price); $ad->setCity($city); $ad->setDistrict($district); $ad->setCategories($category); $ad->setEmail($json_decode_ad->email); $ad->setPhonenumber($json_decode_ad->phonenumber); $ad->setUser($user); $json_property = $request->get('property'); $json_decode_property = json_decode($json_property); foreach ($json_decode_property as $val) { $type_id = substr($val->name, -2, 1); $type = $em->getRepository("AppBundle:Type")->find($type_id); switch ($type->getType()) { case 'string': $value = new StringValue(); break; case 'integer': $value = new IntegerValue(); break; case 'enum': $value = new EnumValue(); break; default: throw new \Exception(); } $value->setAd($ad); $value->setType($type); $em->persist($value); $value->setValue($val->value); } }