Object of class (třída) could not be converted to string

grovik
Člen | 69
+
0
-

Kde je problém:

Ukládám nějaká data o zvířeti. K tomu mám nějaký počet fotek.
Ty chci ke zvířeti přiřadit.
Pokud je to editace je to v pohodě.
Pokud je to nové zvíře, musím ho nejprve persistnout (tak praví rady a porady Doctriny), použít a pak flushnout
Jenže to padá na tu chybu.

 $animal = New Animal();
            $azyl = $this->azylRepository->findById($this->getPresenter()->getUser()->getIdentity()->getData()['Azyl']->getId());

            $animal->setAzyl($azyl);
            $animal->setIsDeleted(false);
            $animal->setAdopted(false);
            $animal->setToAdoption($values->toAdoption);
            $animal->setName($values->name);
            $animal->setDescription($values->description);
            $animal->setSpecies($this->speciesRepository->findOneById($values->species));
            $animal->setBirthDate($values->birthDate);
            $animal->setBreed($values->breed);
            $this->animalsRepository->persist($animal); //TADY
            foreach ($values->photos as $photo)
            {

                $photoUpload = New Photo();
                $photoUpload->setAzyl($azyl);
                $photoUpload->setDate(new DateTimeImmutable('now'));
                $photoUpload->setAnimal($animal); //A TADY
                $photoUpload->uploadAzylPhoto($photo);
                $this->photosRepository->save($photoUpload);
            }

            $this->animalsRepository->flush($animal);
            $this->flashMessage('Zvířátko bylo úspěšně přidáno.', 'alert-success');
Šaman
Člen | 2659
+
+1
-

Bez podrobností těžko radit, ale od boku bych tipoval na:

$animal->setSpecies($this->speciesRepository->findOneById($values->species));

resp. na to, že $this->speciesRepository->findOneById($values->species) vrátí objekt, ale v databázi to zkusí species uložit jako string. Pokud ano, řešením by bylo do metody setSpecies() předat string.

grovik
Člen | 69
+
0
-

Díky.
Přesně k tomu jsem došel taky. Setter jsem měl nadefinovaný, ale prostě jsem se upsal a nedal ho tam.
Skutečně to bylo jet zapomenuté ‚set‘.

Editoval grovik (7. 11. 2:05)