Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF] Problem z Zend_Db_Table
ska
post 30.03.2007, 17:50:01
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 28.03.2007

Ostrzeżenie: (0%)
-----


Witam,

mam bardzo dziwny błąd korzystając z klasy Zend_Db_Table, metody fetchAll()

Mam taki skrypt:

  1. <?php
  2.  
  3. //index.php
  4. Zend_Loader::loadClass( 'Zend_Db' );
  5. Zend_Loader::loadClass( 'Zend_Db_Table' );
  6.  
  7. $dbParams = array (..................);
  8.  
  9. $dbAdapter = Zend_Db::factory( 'PDO_MYSQL', $dbParams );
  10. Zend_Db_Table::setDefaultAdapter( $dbAdapter );
  11.  
  12. ?>
  13.  
  14. <?php
  15.  
  16. //app/admin/models/FormsModel.php
  17.  
  18. class FormsModel extends Zend_Db_Table {
  19.  
  20. protected function _setup() {
  21. $this->_name = 'forms';
  22. $this->_primary = 'id';
  23. parent::_setup();
  24. }
  25.  
  26. }
  27.  
  28. ?>
  29.  
  30.  
  31. <?php
  32.  
  33. //app/admin/controllers/FormsControllers.php
  34.  
  35. class Admin_FormsController extends Zend_Controller_Action {
  36.  
  37. function __construct(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response, array $args = array()) {
  38. parent::__construct($request, $response, $args);
  39. try{
  40. Zend_Loader::loadClass( 'FormsModel' );
  41. $db = new FormsModel();
  42. $result = $db->fetchAll();
  43. }
  44. catch (Exception $e){
  45. echo $e;
  46. }
  47. }
  48.  
  49. ?>


Komunikat błędu jaki dostaje:
Fatal error: Class 'Zend_Db_Table_Row_Abstract' not found in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\test\library\Zend\Db\Table\Row.php on line 37
(oczywiście klasa ta jest tam zaimplementowana.)

Tabela 'forms' w bazie wraz z danymi również istnieje.

a przed tym komunikat wyświetla jakiś cały plik (oto jego fragment):
  1. ?php /** * Zend Framework * * LICENSE * * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://framework.zend.com/license/new-bsd * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@zend.com so we can send you a copy immediately. * * @category Zend * @package Zend_Db * @subpackage Table * @copyright Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ /** * Zend_Loader */ require_once 'Zend/Loader.php'; /** * @category Zend * @package Zend_Db * @subpackage Table * @copyright Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ abstract class Zend_Db_Table_Row_Abstract { /** * The data for each column in the row (column_name => value). * * @var array */ protected $_data = array(); /** * This is set to a copy of $_data when the data is fetched from * a database, specified as a new tuple in the constructor, or * when dirty data is posted to the database with save(). * @var array */ protected $_cleanData = array(); /** * Zend_Db_Table parent class or instance. * * @var Zend_Db_Table */ protected $_table = null; /** * Connected is true if we have a reference to a live * Zend_Db_Table_Abstract object. * This is false after the Rowset has been deserialized. * * @var boolean */ protected $_connected = true; /** * Name of the class of the Zend_Db_Table object. * * @var string */ protected $_tableClass = null; /** * Primary row key(s). * * @var array */ protected $_primary; /** * Constructor. * * Supported params for $config are:- * - table = class name or object of type Zend_Db_Table_Abstract * - data = values of columns in this row. * * ...........
  2. etc.......................


Siedze nad tym dwie godziny i nie mogę dojść do rozwiązania.. gdyby ktos pomógł byłbym wdzięczny smile.gif

Ten post edytował ska 30.03.2007, 17:55:31
Go to the top of the page
+Quote Post
cyphelf
post 30.03.2007, 18:53:10
Post #2





Grupa: Zarejestrowani
Postów: 68
Pomógł: 1
Dołączył: 27.03.2006

Ostrzeżenie: (0%)
-----


Ten błąd występuje w wersji Zend Framework 0.9.0. Aby go wyeliminować, zaktualizuj pliki frameworka do wersji 0.9.1.


--------------------
lorem ipsum : polska społeczność zend framework
Go to the top of the page
+Quote Post
ska
post 3.04.2007, 21:56:08
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 28.03.2007

Ostrzeżenie: (0%)
-----


po napisaniu postu mnie natchnęło i właśnie to zrobiłem.. działa smile.gif

ale i tak dzięki...

-----------EDIT---------------

witam,

nie chciałem zaczynać nowego tematu, bo sprawa także dotyczy Zend_Db_Table, a mianowicie 'poruszaniu się' po obiekcie metody fetchAll().

  1. <?php
  2. $result = $db->fetchAll();
  3. ?>


najwygodniej oczywiście przechodzić przez dane pętlą foreach, no ale robi sie problem, gdy np. buduje sobie drzewo algorytmem iteracyjnym gdzie pętla w pętli będzie zachodzić np. kilkakrotnie. W tym momencie foreach wywołany w innym foreach wykonuje się raz i przerwane zostają wszystkie nadrzedne pętle foreach. Obiektu $result nie mogę przejść petlą for gdyż nie mogę się odwoływać do instancji jak do tablicy...

no i moje pytanie, czy jest jakis sposób na obejście tego smile.gif

z góry dziękuję, pozdrawiam

Ten post edytował ska 3.04.2007, 21:56:44
Go to the top of the page
+Quote Post
konys
post 3.04.2007, 22:23:17
Post #4





Grupa: Zarejestrowani
Postów: 100
Pomógł: 7
Dołączył: 5.11.2005

Ostrzeżenie: (0%)
-----


$db->fetchAll() zwraca obiekt klasy Zend_Db_Table_Rowset, który można przekonwertować do tablicy
  1. <?php
  2. $array = $db->fetchAll()->toArray();
  3. ?>
Go to the top of the page
+Quote Post
ska
post 4.04.2007, 23:37:37
Post #5





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 28.03.2007

Ostrzeżenie: (0%)
-----


faktycznie, dziekuję..
Go to the top of the page
+Quote Post
milus
post 12.04.2007, 22:36:55
Post #6





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 15.04.2006

Ostrzeżenie: (0%)
-----


Nie chcę zaczynać nowego tematu.
Zastanawiam się czy Zend_Db_Table można nazwać ORM'em ?
Co sądzicie questionmark.gif
Go to the top of the page
+Quote Post
murwazy
post 13.04.2007, 11:56:36
Post #7





Grupa: Zarejestrowani
Postów: 53
Pomógł: 5
Dołączył: 13.04.2007
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Cytat(milus @ 12.04.2007, 23:36:55 ) *
Zastanawiam się czy Zend_Db_Table można nazwać ORM'em ?
Co sądzicie ??


niestety nie :(
brakuje mi tego bardzo, nie ma tez tak prostych spraw jak dynamicznie tworzone findery
$user->findByActive(1);
gdzie Active to nazwa kolumny w tabeli uzytkownikow.

w propozycjach sa rozwiazania okolo-ormowe
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.06.2025 - 00:23