2015-11-29 7 views
5

mam podmiot z atrybutu zdefiniowanego w następujący sposób:Symfony/Doctrine: Dlaczego mój atrybut liczby całkowitej wraca jako ciąg znaków?

/** 
* @var integer 
* 
* @ORM\Column(name="weight", type="integer") 
*/ 
private $weight; 

starałem się rozwiązać problem i używane var_dump(), aby mieć trochę pojęcia o tym, co się dzieje ...

Odpowiedź została :

string '20' (length=2) 

Nie rozumiem, dlaczego waga wraca z powrotem jako ciąg ... nie powinna być liczbą całkowitą?

int 20 

Czy powinienem sobie z tym poradzić w mojej logice biznesowej?


Edit (jak zadzwoniłem var_dump()):

Mam klasy o nazwie "Kalkulator", że iteracje $ przedmioty i użyć atrybutu $ wagi. Czy coś takiego:

Kontroler:

$calculator->calculate($category->getItems()); 

Kalkulator:

foreach($items as $item) { 
    //logic... 

    var_dump($item->getWeight()); 
} 

Edit (kolumna schematu bazy danych):

Oto pola w bazie danych:

weight int(11) 
+0

co zrobiłeś var_dump? pokaż kod –

+0

Witam, dodałem kilka szczegółów ... dzięki –

+0

jak są przechowywane wartości w bazie danych? czy schemat colum jest zgodny? –

Odpowiedz

0

Co wersja PHP i MySQL kierowca używasz?

Nie wiem dokładnie, jak Symfony rzuca (lub nie) wyniki bazy danych, ale jeśli używasz PHP 5.2, może to być całkiem normalne: każda zmienna, jaką otrzymasz z MySQL w PHP jest zawsze ciągiem znaków, nawet jeśli jest to liczba całkowita w bazie danych.

W PHP 5.3, jest inaczej, jeśli używasz odpowiedni sterownik (mysqlnd - Zobacz http://blog.ulf-wendel.de/2008/pdo_mysqlnd-the-new-features-of-pdo_mysql/)

Zobacz tę odpowiedź więcej szczegółów: https://stackoverflow.com/a/2430657/1741150

nadzieję, że pomoże!

+0

Witam, używam "PHP 5.4.40" i "PDO" (przez Doctrine ORM/Symfony) –

+0

Czy twoje 'getItems()' rzuca jakieś obiekty w dowolnym droga ? – tchap

+0

To jest po prostu powrót kolekcji: /** * Get pozycji * * @return \ Doktryna \ Common \ Collections \ Kolekcja */ getItems public function() { return $ this-> przedmioty; } –