Siedze wlasnie nad fragmentem kodu odpowiedzialnym za import danych z pliku CSV i... zacialem sie na z pozoru blahej rzeczy - nie moge dokonac utrwalenia obiektu $kit (zestaw produktow) w bazie danych z wykorzystaniem frameworka SF3 i Doctrine.
Na poczatek fragmenty encji:
Kit (zestaw produktow)
/** * @Assert\NotBlank( * message = "Ta wartość nie powinna być pusta. W pierwszej kolejności dodaj rodzaj zestawu produktów." * ) * @ORM\ManyToOne(targetEntity="KitKind", inversedBy="kits", cascade={"persist"}) * @ORM\JoinColumn(name="kitkind_id", referencedColumnName="id", nullable=false) */ protected $kitKind; /** * @Assert\NotBlank( * message = "Ta wartość nie powinna być pusta. W pierwszej kolejności dodaj typ zestawu produktów." * ) * @ORM\ManyToOne(targetEntity="KitType", inversedBy="kits", cascade={"persist"}) * @ORM\JoinColumn(name="kittype_id", referencedColumnName="id", nullable=false) */ protected $kitType; /** * Set kitKind * * @param \Diet\BackendBundle\Entity\KitKind $kitKind * * @return Kit */ public function setKitKind(\Diet\BackendBundle\Entity\KitKind $kitKind) { $this->kitKind = $kitKind; return $this; //$kitKind->addKit($this); // custom setting } /** * Get kitKind * * @return \Diet\BackendBundle\Entity\KitKind */ public function getKitKind() { return $this->kitKind; } /** * Set kitType * * @param \Diet\BackendBundle\Entity\KitType $kitType * * @return Kit */ public function setKitType(\Diet\BackendBundle\Entity\KitType $kitType) { $this->kitType = $kitType; return $this; //$kitType->addKit($this); // custom setting } /** * Get kitType * * @return \Diet\BackendBundle\Entity\KitType */ public function getKitType() { return $this->kitType; }
KitKind (rodzaj zestawu)
/** * @var ArrayCollection * * @ORM\OneToMany(targetEntity="Kit", mappedBy="kitKind", cascade={"persist"}, fetch="EXTRA_LAZY") */ protected $kits; /** * Add kit * * @param \Diet\BackendBundle\Entity\Kit $kit * * @return KitKind */ public function addKit(\Diet\BackendBundle\Entity\Kit $kit) { $this->kits[] = $kit; return $this; //$kit->setKitKind($this); // custom setting }
KitType (typ zestawu)
/** * @var ArrayCollection * * @ORM\OneToMany(targetEntity="Kit", mappedBy="kitType", cascade={"persist"}, fetch="EXTRA_LAZY") */ protected $kits; /** * Add kit * * @param \Diet\BackendBundle\Entity\Kit $kit * * @return KitType */ public function addKit(\Diet\BackendBundle\Entity\Kit $kit) { $this->kits[] = $kit; return $this; //$kit->setKitType($this); // custom setting }
W kontrolerze mam taki oto fragment kodu:
$product = new Product(); $product->setName($product_name); $product_slug = $this->slugify($product_name); $product->setSlug($product_slug); // Zestawy produktów $kit_image = iconv('windows-1250', 'utf-8', $data[1]); $kit_name = iconv('windows-1250', 'utf-8', $data[2]); $kit_slug = $this->slugify($kit_name); $kit_shortdescription = iconv('windows-1250', 'utf-8', $data[3]); $kit_description = iconv('windows-1250', 'utf-8', $data[4]); $kit_kind = iconv('windows-1250', 'utf-8', $data[5]); $kit_type = iconv('windows-1250', 'utf-8', $data[6]); if ($kit_name != NULL && $kit_kind != NULL && $kit_type != NULL) { $Kit = $manager->getRepository('DietBackendBundle:Kit')->findOneByName($kit_name); $KitKind = $manager->getRepository('DietBackendBundle:KitKind')->findOneByName($kit_kind); $KitType = $manager->getRepository('DietBackendBundle:KitType')->findOneByName($kit_type); if (!$Kit && $KitKind && $KitType) { $kit = new Kit(); $kit->setName($kit_name); $kit_slug = $this->slugify($kit_name); $kit->setSlug($kit_slug); $kit->setShortDescription($kit_shortdescription); $kit->setDescription($kit_description); $kit->setKitKind($KitKind); // w tym przypadku wyswietlany jest blad o zduplikowanym kluczu (nazwa rodzaju zestawu produktow jest unikalna, rowniez nazwa samego zestawu) $kit->setKitType($KitType); // podobnie tutaj (jesli zaremuje dwie powyzsze linie, otrzymuje zwrotke o wartosciach NULL dla kitkind_id oraz kittype_id) // Zdjęcia zestawu produktów if ($kit_image != NULL) { $image_name = $images_chunks[$i]; } $newfile = $this->getKitImagesDir().$kit_slug.'/'.$images_chunks[$i]; $filetmp = $this->getUploadDirImages().$images_chunks[$i]; $newfiletmp = $this->getKitImagesDir().$kit_slug.'/'.$images_chunks[$i]; continue; } } else { continue; } $kit->setImage($image_name); } } // Zdjęcia zestawu produktów $kit->addProduct($product); $manager->persist($kit); $manager->flush(); $manager->clear(); }
Czy ktos z Was, szanowni Koledzy i Kolezanki, podpowie, gdzie robie blad? Bede wdzieczny za poswiecony czas i pomoc.