Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CakePHP]Bazy danych w komponentach
Forum PHP.pl > Forum > PHP > Frameworki
Mike0
Witam, zaczynam zabawę z cakePHP 2.0. Potrzebuję zrobić komponent, który będzie zapisywał mi logi do bazy danych. Jednak tu właśnie utknąłem:
jak używać bazy danych z poziomu komponentu?

Proszę o pomoc.
kleus
Najlepiej załadować model do componentu. Poniżej link i moje małe objaśnienie:
  1. App::uses('ModelName', 'Model');
  2. class ComponentNameComponent extends Component {
  3. public function foo() {
  4. $ModelName = new ModelName();
  5. }
  6. }

http://book.cakephp.org/2.0/en/core-utilit...Auses#App::uses
Mike0
Witam, dzięki za odpowiedź. Jednak nadal mam problem z uzyskaniem dostępu do modelu.

  1. Fatal error: Call to undefined method LogsController::create() in [...]\app\Controller\Component\LogsComponent.php on line 48 (patrz poniżej)


\app\Controller\Component\LogsComponent.php:
  1. App::uses('Logs', 'Model');
  2.  
  3. class LogsComponent extends Component {
  4.  
  5. function initialize(&$controller) {
  6. $this->Logs = new LogsController();
  7. $this->Controller = $controller;
  8. $this->params = $controller->params->params;
  9. }
  10.  
  11. function save_log( $public = 'enable', $desc = '' ) {
  12.  
  13. //tu wyskakuje error:
  14. $this->Logs->create();
  15.  
  16. $this->Logs->save($this->data);
  17.  
  18. return;
  19.  
  20. }
  21. }


\app\Model\Log.php:
  1. class Log extends AppModel {
  2.  
  3. public $name = 'Log';
  4.  
  5. public $belongsTo = array(
  6. 'user' => array(
  7. 'className' => 'user',
  8. 'foreignKey' => 'user_id',
  9. 'fields' => array('id','active','username','role')
  10. )
  11. );
  12.  
  13. }


Ponownie proszę o pomoc.
kleus
W swoim komponencie widzę że odwołujesz się jednak do Controllera:
  1. $this->Logs = new LogsController();

Załaduj w komponencie Controller zamiast Modelu.
Mike0
W tym rzecz, że próbowałem na różne sposoby wpisywać argumenty app::uses ale ciągle jest to samo. Nie zależy mi na używaniu controllera, bo i tak nic w nim potrzebnego nie mam, jedyne co chce uzyskać to dostęp do tabeli w bazie danych.
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.