Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [KOHANA] delete() on loaded objects
Forum PHP.pl > Forum > PHP > Frameworki
mrc
Witam. Mam taką oto bazę danych:

  1. CREATE TABLE IF NOT EXISTS `sessions` (
  2. `id` varchar(40) CHARACTER SET utf16 COLLATE utf16_bin NOT NULL,
  3. `ip` varchar(15) NOT NULL,
  4. `user_id` int(10) UNSIGNED NOT NULL,
  5. `login_date` date NOT NULL,
  6. `login_time` time NOT NULL,
  7. `last_active_date` date NOT NULL,
  8. `last_active_time` time NOT NULL,
  9. `browser` varchar(255) CHARACTER SET utf16 COLLATE utf16_bin NOT NULL,
  10. PRIMARY KEY (`id`)
  11. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;


  1. CREATE TABLE IF NOT EXISTS `users` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `username` varchar(50) NOT NULL,
  4. `password` varchar(32) NOT NULL,
  5. `user_group` int(10) UNSIGNED NOT NULL,
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;


Do tego modele:

  1. <?php defined('SYSPATH') or die('No direct script access.');
  2. class Model_Session extends ORM{
  3. protected $_belongs_to = array(
  4. 'user' => array(),
  5. );
  6.  
  7. protected $_primary_key = 'id';
  8.  
  9. public function __construct($id=NULL){
  10. parent::__construct($id);
  11. }
  12. };
  13. ?>


  1. <?php defined('SYSPATH') or die('No direct script access.');
  2. class Model_User extends ORM{
  3. protected $_has_many = array(
  4. 'session' => array(),
  5. );
  6.  
  7. public function __construct($id=NULL){
  8. parent::__construct($id);
  9. }
  10. };
  11. ?>


W różnych kombinacjach poniższego polecenia dostaję różne błędy typu:

  1. ORM::factory('session', $this->session->get('session_id'))->find()->delete();


Kohana_Exception [ 0 ]: Method find() cannot be called on loaded objects

Czy ktoś może mi pomóc pozbyć się błędu? i czy w ogóle ktoś mógłby mi wyjaśnić, dlaczego mogą takie błędy występować?
gothye
w ORM stosujesz
albo :
  1. ->find();

albo
  1. ->delete();


mrc
Gdy usunę find() to pojawia mi się wyjątek:

Kohana_Exception [ 0 ]: Cannot delete session model because it is not loaded....

Zadziałało coś takiego:

  1. $session_orm = ORM::factory('session', $this->session->get('session_id'));
  2. if($session_orm->loaded()){
  3. $session_orm->delete();
  4. }


Ale nie jestem pewien, dlaczego metoda ->loaded() tak bardzo zmienia postać rzeczy? ktoś mógłby to wyjaśnić? smile.gif

Problem rozwiązany. czasami $this->session->get('session_id') miała wartość NULL, dlatego nie znajdowało mi pola w bazie, przez co loaded() zwracało mi false (nie było do usunięcia żadnego wiersza...)

Dzięki gothye za poradę smile.gif bo o tym co wskazałeś, nie wiedziałem smile.gif a pomogło w działaniu skryptu
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.