2016-06-28 5 views
0

Ich wollte die Sitzungstabelle verwenden, um eine Liste aller angemeldeten Benutzer zu erhalten. Um dies zu tun Ich habe versucht, den folgenden Code zu verwenden, um die cake_sessions Tabelle abzufragen:Get eingeloggt Benutzer durch Durchsuchen von CakePHP 2.x Sitzung Tabelle

$this->loadModel('CakeSession'); 
$sessions = $this->CakeSession->find('all', array('fields' => 'data')); 
// next I process session data to find logged in users 

Aber der Ausführung des Codes ich die folgende Fehlermeldung erhalten:

Call to undefined Methode CakeSession :: find()

Wenn ich den folgenden Code verwenden, um direkt auf die Tabelle zuzugreifen es ganz gut funktioniert:

$db = ConnectionManager::getDataSource("default"); 
$sessions = $db->fetchAll("SELECT data from cake_sessions"); 
// next I process session data to find logged in users 

Ist accessin Ist die Sitzungstabelle eingeschränkt? Meine derzeitige Lösung funktioniert gut, aber ich bin verwirrt, warum ich die CakeSession-> find() nicht verwenden kann.

Antwort

1

Da CakeSession ist nicht eine Modellklasse. Siehe http://api.cakephp.org/2.8/class-CakeSession.html

Die Klasse, die Sie beziehen eine Datenquelle als „Namensraum“ sagt man auch: Cake\Model\Datasource. In Cake2 wurde der Sitzungszugriff als Datenquelle implementiert. "Model" ist eine Ebene, nicht nur eine Art von Dateien.

Erstellen Sie eine geeignete Sitzungsmodellklasse in Ihrem Apps Model-Ordner. Siehe http://book.cakephp.org/2.0/en/models.html

Sie müssen es möglicherweise anders benennen, um Konflikte zu vermeiden, da Cake2 im Gegensatz zu Cake3 keine echten PHP-Namespaces verwendet.

+0

danke! Das erklärt es. Ich hatte kein Modell erstellt, weil ich annahm, dass ein Aufruf von ** $ this-> loadModel ('CakeSession'); ** dynamisch das Modell für mich erstellen würde. Aber dieser Name muss einen Konflikt verursacht haben. Wenn ich ein neues Modell namens MyCakeSession erstelle, funktioniert es gut. – John