Hallo zusammen,
ich bin neu bei Yii und versuche gerade die Architektur zu verstehen.
Und da habe ich direkt ein paar Fragen.
Ich möchte aus einem / mehreren Controllern auf eine CouchDb zugreifen. ( die MySQL soll nicht mehr benutzt werden )
Was ist dafür besser geeignet ,ein Modul oder eine Komponente ?
Wie kann ich eine "public" Funktion eines Modul Controllers aufrufen ?
wenn zum Beispiel der Controller "test" heisst und die Funktion innerhalb des Modulcontrollers "testfunktion" ?
mfg
E.
julian90
(Jb)
November 28, 2011, 2:11pm
2
Ich würde dir vorschlagen eine Komponente zu nutzen.
Aber eig müsstest du ja nur in der config/main.php
Das db Array anpassen.
MySQL sieht ja so aus:
‘db’=>array(
'connectionString' => 'mysql:host=localhost;dbname=xxxxxxxx',
'emulatePrepare' => true,
'username' => 'xxxxxxx',
'password' => 'xxxxxx',
'charset' => 'utf8',
),
Dann ist über all in deinem Yii Project die DatenBank unter db erreich bar.
Beispiel Yii::app()->db->creatCommand(‘SELECT test FROM test WHERE test=1’);
Zu 2:
Falls du sie in deim Controller aufrufen willst wo die Funktion definiert ist dann so -> $this->testfunktion();
Nun kannst du aber die Funktion auch per Url aufrufen dann musst du aber deine Funktion so umbennen
function actionTestFunktion(){
$this->render(‘view’);
}
beachte dann aber das du dieser Action dann Rechte zuteilen kannst also wer die Berechtigung hat diese Action auszuführen.
Diese behandelst du dann in dem jeweiligen Controller in der Function accessRoles().
Ich hoffe das, dass erst mal so reicht.
Und dann ich habe keine Ahnung was CouchDb ist ^^
julian90:
Ich würde dir vorschlagen eine Komponente zu nutzen.
Aber eig müsstest du ja nur in der config/main.php
Das db Array anpassen.
MySQL sieht ja so aus:
‘db’=>array(
'connectionString' => 'mysql:host=localhost;dbname=xxxxxxxx',
'emulatePrepare' => true,
'username' => 'xxxxxxx',
'password' => 'xxxxxx',
'charset' => 'utf8',
),
Dann ist über all in deinem Yii Project die DatenBank unter db erreich bar.
Beispiel Yii::app()->db->creatCommand(‘SELECT test FROM test WHERE test=1’);
Zu 2:
Falls du sie in deim Controller aufrufen willst wo die Funktion definiert ist dann so -> $this->testfunktion();
Nun kannst du aber die Funktion auch per Url aufrufen dann musst du aber deine Funktion so umbennen
function actionTestFunktion(){
$this->render(‘view’);
}
beachte dann aber das du dieser Action dann Rechte zuteilen kannst also wer die Berechtigung hat diese Action auszuführen.
Diese behandelst du dann in dem jeweiligen Controller in der Function accessRoles().
Ich hoffe das, dass erst mal so reicht.
Und dann ich habe keine Ahnung was CouchDb ist ^^
Erstmal Danke für deine Antwort.
Die CouchDB ist eine noSQL Datenbank. ( hat mit SQL nichts mehr zu tun )
In der Datenbank werden die Daten nicht mehr in Zeilen und Spalten gespeichert, sondern alle Daten werden innerhalb eines formlosen "Dokuments" gespeichert.
"formlos" bedeutet , das das Dokument vorher NICHT definiert ist. ( bei einer SQL DB musst du ja vorher das Datenbankdesign erstellen…das gibt es hier nicht mehr )
Du könntest wenn du das willst eine komplette Webseite einfach als HTML Dokument in diese Datenbank schreiben.
Das hat den Vorteil (besonders bei der Couchdb) , das du fast unendlich skalieren kannst.
Du kannst also unbegrenzt Datenbankserver da dranhängen.( die alle den aktuellen Datenbestand haben / Ohne den Master & Slave Ärger)
Ich werd also einfach mal eine CouchDB Komponente bauen ,und mal testen wie das so unter Yii geht
bis dann
kokomo
(Mwerlberger85)
November 30, 2011, 1:15pm
4
Es gibt bereits eine Extension die sich yiimongodbsuite nennt.
Da mongo db meines Wissens nach auch eine Dokumentenbasierende Datenbank ist, kannst du dir vielleicht für deine Komponente einiges abschauen.
kokomo:
Es gibt bereits eine Extension die sich yiimongodbsuite nennt.
Da mongo db meines Wissens nach auch eine Dokumentenbasierende Datenbank ist, kannst du dir vielleicht für deine Komponente einiges abschauen.
Danke , werd ich mir auf jedenfall mal anschauen.
noe
(Sergejs Nosovs)
March 1, 2012, 11:41am
6
Hallo,
ich denke, dass es einfacher, eine externe Bibliotek "PHP-on-Couch" vervenden, und ein Komponent hinzufuegen.
Ich wollte auch den Code zeigen aber lleide ist es unmoeglich um Politik des Forum 8-(
mfg,
S.