Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Obsługa bazy danych
Forum PHP.pl > Forum > PHP > Frameworki
PawelC
Witam smile.gif
Wiem, że może trochę za dużo bym chciał, ale mógłby mi ktoś wyjaśnić jak wygląda w Zend Framework obsługa bazy danych, a dokładnie utworzenie modelu, przekazanie tego do kontroler i stamtąd do widoku, byłbym bardzo wdzięczny, nie chodzi mi o jakąś łopatologie, tylko prosty przykład. W necie czytałem co i jak, ale jest tak napisane że nic nie czaję i u mnie wywala same błędy.

Jak stworzyć kontroler i widok to wiem, ale nie mam za chiny pojęcia na temat obsługi bazy danych.
nospor
Cytat
W necie czytałem co i jak
Nie wiem w jakim necie to czytales, ale w manualu ZF masz to opisane dość dobrze.

Cytat
i u mnie wywala same błędy.
No to pokaz swoj kod i swoje bledy
PawelC
  1. <h1><?php echo $this->escape($this->nazwa); ?></h1>
  2. <p>
  3. <a href="/zf-tutorial/index/add">Add new album</a>
  4. </p>
  5. <table>
  6. <tr>
  7. <th>Title</th>
  8. <th>Artist</th>
  9. <th> </th>
  10. </tr>
  11. <?php foreach($this->albums as $album) : ?>
  12. <tr>
  13. <td><?php echo $this->escape($album->nazwa);?></td>
  14.  
  15. <td><a href="/zf-tutorial/index/edit/id/<?php echo $album->id;?>">Edit</a><a href="/zf-tutorial/index/delete/id/<?php echo $album->id;?>">Delete</a></td>
  16. </tr>
  17. <?php endforeach; ?>
  18. </table>
To jest widok.


Model:

  1. <?php
  2.  
  3. $options = array(
  4.  
  5. Zend_Db::ALLOW_SERIALIZATION => false
  6.  
  7. );
  8.  
  9.  
  10.  
  11. $params = array(
  12.  
  13. 'host' => '127.0.0.1',
  14.  
  15. 'username' => 'root',
  16.  
  17. 'password' => '',
  18.  
  19. 'dbname' => 'download',
  20.  
  21. 'options' => $options
  22.  
  23. );
  24.  
  25.  
  26.  
  27. $db = Zend_Db::factory('Pdo_Mysql', $params);
  28.  
  29.  
  30.  
  31. $result = $db->fetchOne('SELECT * FROM gd_pliki WHERE id = 21');
  32.  
  33. echo $result;





Kontroler:

  1. <?php
  2.  
  3. class HelloController extends Zend_Controller_Action
  4. {
  5. function __construct()
  6. {
  7. parent::__construct();
  8. Zend::loadClass('album');
  9. }
  10.  
  11.  
  12. public function init()
  13. {
  14.  
  15. }
  16.  
  17. public function indexAction()
  18. {
  19. $view = Zend::registry('view');
  20. $view->title = "My Albums";
  21. $album = new Album();
  22. $view->albums = $album->fetchAll();
  23. $view->actionTemplate = 'index.php';
  24. echo $view->render('site.tpl.php');
  25.  
  26. }
  27.  
  28. }
Podejrzewam, że wszystko jest źle, ale właśnie dlatego prosiłem o jakiś przykład. Błąd dostaje taki:

Kod
Fatal error: Declaration of HelloController::__construct() must be compatible with that of Zend_Controller_Action_Interface::__construct() in C:\wamp\www\application\controllers\HelloController.php on line 31
nospor
No ale przeciez on ci się czepia do kontrolera a nie do modelu...
Poza tym kod, który szumnie nazwales MODEL nie ma nic wspolnego z tym co sie w ZF nazywa modelem. Weź najpierw przeczytaj tutorial na stronie zenda a dopiero jak go przejdzieszb bierz sie po malu za modele.
PawelC
I właśniego dlatego chciałem prosty przykład wykorzystania baz danych w ZF, i połączenie tego w jedną całość, no ale cóż może coś wymyśle.
nospor
Cytat
no ale cóż może coś wymyśle.
Ale ty nic nie wymyslaj! Od tego masz tutka na stronie zenda o ktorym ci po raz kolejny wspominam. Przejdź najpierw go bo nie masz nawet podstaw by ruszac z zendem. Na forum naprawde nie zadaje sie pytan, na ktore odpowiedzi znajdziesz w innych ogolnie dostepnych tutkach.
PawelC
Temat do zamknięcia, a ja sobie dam spokój bo nie mogę się połpać.
darko
Przykładowe wykorzystanie bazy danych w ZF:
w pliku /application/configs/application.ini ustawiamy zasoby do połączenia z bazą danych:
resources.db.adapter = pdo_mysql
resources.db.params.host = localhost

resources.db.params.username = USER
resources.db.params.password = PASSWORD
resources.db.params.dbname = NAZWA_BAZY

// ---------------------------------------------------
I gdzieś dalej w kodzie:
  1. //(jakaś klasa, np. jakiś model lub kontroler) {
  2. //...
  3. private $_db;
  4.  
  5. // (jakaś metoda, ale najlepiej konstruktor dla modelu lub metoda init w przypadku kontrolera) {
  6. //...
  7. $this->_db = Zend_Db_Table::getDefaultAdapter();
  8. $this->_db->getConnection();
  9. //...
  10. // robimy insert do tabeli test:
  11. $data = array('nazwa_kolumny_1' => 'wartosc_kolumny_1');
  12. $this->_db->insert('NAZWA_TABELI', $data);
  13. //...
  14. }
  15. }
  16. // ---------------------------------------------------
PawelC
Wreszcie zakumałem wszystko o co mi chodziło smile.gif Nawet przekazywanie wyników zapytania do widoku biggrin.gif Wielkie dzięki za pomoc smile.gif
darko
Cytat(ExPlOiT @ 26.01.2010, 23:33:14 ) *
Temat do zamknięcia, a ja sobie dam spokój bo nie mogę się połpać.

A już chciał się poddać tongue.gif
PawelC
Bo sto razy łatwiej jest mi coś zrozumieć, jak mi ktoś wyjaśni, niż jakbym miała samemu do tego dojść, tymbardziej, że jak zrobiłem wszystko zgodnie z tutorialem to miałem same błędy.
nospor
Cytat
, że jak zrobiłem wszystko zgodnie z tutorialem to miałem same błędy.
A w ktorym miejscu tego tutoriala kazali ci pisac kontruktor do kontrolera?
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.