2012-06-25 6 views
8

Czy istnieje sposób na włączenie wyrażeń MySQL, takich jak NOW() w aktualnej wersji ZF2 (2.0.0beta4) do Zend \ Db i/lub instrukcje insertGateway()/update() TableGateway?ZF2 Zend Db Wstawianie/aktualizację przy użyciu wyrażenia Mysql (Zend Db Sql Expression?)

Oto związane post na liście dyskusyjnej, choć nie został on odpowiedział: http://zend-framework-community.634137.n4.nabble.com/Zend-Db-Expr-and-Transactions-in-ZF2-Db-td4472944.html

Wydaje się, że ZF1 stosować coś takiego:

$data = array( 
     'update_time' => new \Zend\Db\Expr("NOW()") 
    ); 

A po pominie Zend \ Db \ sql \ Expression próbowałem:

$data = array(
     'update_time' => new \Zend\Db\Sql\Expression("NOW()"), 
    ); 

Ale pojawia się następujący błąd:

Catchable fatal error: Object of class Zend\Db\Sql\Expression could not be converted to string in /var/www/vendor/ZF2/library/Zend/Db/Adapter/Driver/Pdo/Statement.php on line 256 

Zgodnie z zaleceniami tutaj: http://zend-framework-community.634137.n4.nabble.com/ZF2-beta3-Zend-Db-Sql-Insert-new-Expression-now-td4536197.html Właśnie ustawiam datę z kodem PHP, ale wolałbym używać serwera MySQL jako jedynego źródła prawdy dla daty/czasu.

$data = array(
     'update_time' => date('Y-m-d H:i:s'), 
    ); 

Dzięki, doceniam wszelkie dane wejściowe!

Odpowiedz

2

Nie jestem pewien, czy naprawiono to w najnowszych aktualizacjach, ale był to znany bug, a nawet jeśli powiedzieli, że został naprawiony, dla mnie nadal nie działa po poprawce.

+0

Dzięki za odpowiedzi i linkiem, będę aktualizować do najnowszej źródła i sprawdzić, czy nie ustąpi. –

+0

Zend Framework 2.0 beta 6 i nadal nie ma rozwiązania tego problemu!?!?! – ufk

+0

Problem rozwiązany w Zend Framework 2.0 beta 7 – ufk

11

Zend_Db_Sql_Expression działa teraz dla mnie.

$data = array(
    'update_time' => new \Zend\Db\Sql\Expression("NOW()"), 
); 
+0

Czy mógłbyś dodać trochę więcej informacji dotyczących tej odpowiedzi? Dziękuję – Max

+0

Cześć Max, w czym mogę pomóc? –

0

Działa również dla mnie. Może twój problem był jak mój. Konwersja błędu ciągu znaków była spowodowana tym, że parametr, który przekazałem do metody, był elementem tablicy, a nie tablicy. Sprawdź to i upewnij się, że przekazujesz metodę $ object-> ($ tablica).