Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][Symfony]Doctrine problem
Forum PHP.pl > Forum > PHP > Frameworki
bambam
Witam, mam nastepujacy problem, przy najprostszym pobieraniu danych z bazy.

funkcja:

public function indexAction($category = "Sports", $subcategory = "")
{

$repository = $this->getDoctrine()->getRepository('MindMindBundle:Categories');
$p_category = $repository->findOneByName($category);

if (!$p_category) {
throw $this->createNotFoundException('Not found');
}


$subcategories = $repository->findByPid($p_category->getId());



return $this->render('MindMindBundle:Categories:categories.html.twig',
array('category' => $category,
'subcategories' => $subcategories,
)
);
}

Catchable Fatal Error: Object of class Mind\MindBundle\Entity\Categories could not be converted to string in E:\xampp\xampp\htdocs\Symfony\src\Mind\MindBundle\Controller\CategoriesController.php line 23

Czy ktos ma pojecie czemu sie tak dzieje questionmark.gif
w pliku encji ustawilem wszystkie zmienne na public jednak i tak nic to nie dalo, dlaczego doctrine chce konwertowac obiekt na string?, nie rozumiem;/


Problem wystepuje dokładnie tutaj:

$p_category = $repository->findOneByName($category);

gdy wyszukuje za pomoca

$p_category = $repository->find(1);

działa poprawnie. wiec musi chodzic o string





Prosze o pomc z gory dziekuję.
nospor
Z komunikatu wynika, że używasz obiektu klasy Categories zamiast tekstu. Co tu jest dla ciebie niezrozumiałego?

ps: i używaj bbcode do przedstawiania kodu
bambam
@nospor rozumiem co znaczy blad, lecz nie robie tego wiec blad jest bledny ?


  1.  
  2. public function indexAction($name)
  3. {
  4.  
  5. $em = $this->getDoctrine()->getEntityManager(); // uruchamiam entity manager
  6. $entity = $em->getRepository('MindMindBundle:Categories')->findByName($name);
  7.  
  8. if (!$entity) {
  9. throw $this->createNotFoundException('Unable to find Job entity.');
  10. }
  11. //do tej pory jest ok po var_dump($enitity) widzę obiekt
  12.  
  13. $s = $entity->findAllByPid($entity->getId());
  14.  
  15. // Fatal error: Call to a member function findAllByPid() on a non-object in E:\xampp\xampp\htdocs\Symfony\src\Mind\MindBundle\Controller\CategoriesControlle
    r.php on line 27
  16.  
  17. // wiec jak to mozliwe ze 2 linijki nizej obiekt przestaje byc obiektem ?
  18.  
  19. return $this->render('MindMindBundle:Categories:categories.html.twig', array('category' => $name));
  20.  
  21. }
  22.  
  23.  
  24.  




nospor
Skoro rozumiesz błąd to naprawdę nie rozumiem w czym masz problem....

Komunikat błędu wyraźnie cię informuje, ze oczekuje tekstu. A ty zamiast tekstu podajesz mu obiekt klasy Categories. Pytam ponownie: czego w tym nie rozumiesz skoro twierdzisz że rozumiesz?

Zaś co do drugiego kodu z poprzedniego posta to zrób sobie poprostu
var_dump($entity);
tuż przed $s = $entity->findAllByPid($entity->getId());
bambam
  1. array(1) { [0]=> object(Mind\MindBundle\Entity\Categories)#318 (13) { ["active"]=> int(1) ["pid"]=> int(0) ["name"]=> string(6) "Nature" ["shortDescription"]=> NULL ["description"]=> NULL ["isActive"]=> bool(false) ["createdAt"]=> object(DateTime)#321 (3) { ["date"]=> string(20) "-0001-11-30 00:00:00" ["timezone_type"]=> int(3) ["timezone"]=> string(19) "America/Los_Angeles" } ["updatedAt"]=> object(DateTime)#322 (3) { ["date"]=> string(20) "-0001-11-30 00:00:00" ["timezone_type"]=> int(3) ["timezone"]=> string(19) "America/Los_Angeles" } ["homeImage"]=> NULL ["pubImage"]=> NULL ["urlPubImage"]=> NULL ["videoCount"]=> NULL ["id"]=> int(5) }
  2.  
  3.  


Zrobiłem var_dump jak mowisz i widać że $entity jest obiektem, nastepnie na tym obiekcie chce getter ktory mam zdefiniowany w encji.
Dla najprostszego przykładu:

$id = $entity->getId();

i to zwraca mi:

Fatal error: Call to a member function getId() on a non-object in E:\xampp\xampp\htdocs\Symfony\src\Mind\MindBundle\Controller\CategoriesController.php on line 24


więc jak możesz to prosze wytlumacz mi o co chodzi..
nospor
Czyli mam rozumieć że masz tak:

  1. var_dump($entity);
  2. $id = $entity->getId();

powtarzam: dokładnie tak i kod ten jednocześnie wyświetla ci poprawny obiekt i zarazem komunikat błędy, że $entity nie jest obiektem?
bambam
dokładnie tak, nie wiem czy chodzi tutaj o konfiguracje Doctrine czy jakas inna rzecz, siedze nad tym juz pare dobrych godzin i zachodze w glowe co moze byc nie tak

kod php

  1.  
  2. $em = $this->getDoctrine()->getEntityManager();
  3. $entity = $em->getRepository('MindMindBundle:Categories')->findByName($name);
  4. //$entities = $em->getRepository('MindMindBundle:Categories')->findAll();
  5. if (!$entity) {
  6. throw $this->createNotFoundException('Unable to find Job entity.');
  7. }
  8.  
  9. var_dump($entity);
  10. $id = $entity->getId();
  11. echo $id;
  12.  


array(1) { [0]=> object(Mind\MindBundle\Entity\Categories)#318 (13) { ["active"]=> int(1) ["pid"]=> int(0) ["name"]=> string(6) "Nature" ["shortDescription"]=> NULL ["description"]=> NULL ["isActive"]=> bool(false) ["createdAt"]=> object(DateTime)#321 (3) { ["date"]=> string(20) "-0001-11-30 00:00:00" ["timezone_type"]=> int(3) ["timezone"]=> string(19) "America/Los_Angeles" } ["updatedAt"]=> object(DateTime)#322 (3) { ["date"]=> string(20) "-0001-11-30 00:00:00" ["timezone_type"]=> int(3) ["timezone"]=> string(19) "America/Los_Angeles" } ["homeImage"]=> NULL ["pubImage"]=> NULL ["urlPubImage"]=> NULL ["videoCount"]=> NULL ["id"]=> int(5) } }
Fatal error: Call to a member function getId() on a non-object in E:\xampp\xampp\htdocs\Symfony\src\Mind\MindBundle\Controller\CategoriesController.php on line 24

nospor
...
No przecież na var_dump() widać jak wół że $entity to nie obiekt a tablica....

Dopiero pierwszy element tej tablicy to obiekt.
bambam
miales racje debil ze mnie tongue.gif dziekuje Ci bardzo za pomoc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.